| Age | Commit message (Collapse) | Author |
|
Previously, c035e95 introduced `QtConcurrent::run` to execute `KConfig::sync()` in a separate thread. However, this introduced thread-safety issue:
BUG 518433 (UAF caused by RC):
During application exit, the main thread frees the old `s_sessionConfig` in `KMWSessionManager::saveState()` to create a new one. Meanwhile, the worker thread is still iterating over the old instance's entryMap during `KConfig::sync()`, leading to a Use-After-Free (UAF) crash.
Changes:
Copy the `config` in the main thread so `KConfig::sync()` can safely run in the worker.
BUG: 518433
BUG: 516481
CCBUG: 425627
|
|
kxmlgui KCommandBar uses QAction::menu() to construct its action list.
Reuse the popupMenu as the menu, so KCommandbar finds zoom actions.
|
|
When a program is running on front while the graphical view is being changed, that can make the terminal and file view working directories out of sync. I wasn't able to find a signal from Konsole for when the foreground program exits, so having the terminal respond to F5 is the second best thing.
BUG: 510557
|
|
actions to be
"Empty Trash" has caused me to delete files that I've wanted to restore. This moves the position to where you expect them to be.
To my understanding the standard order in the context menu is:
Creation operations
Visual adjustments
Destructive operations
Misc.
Settings
| Before | After | Restore for comparison |
|-|-|-|
| {width=185 height=144}| {width=225 height=161} | {width=270 height=159} |
BUG: 518713
|
|
|
|
When browsing kdeconnect scheme, offer to open the KDE Connect
app to configure the devices.
On the overview, the button just opens the app. When listing
storage on a device, it opens the app directly with the given device.
|
|
This method would adjust the document to "reasonable size" but such
size is set nowhere, nor there is any indication what is a reasonable
size. This leads to the rename field being a lot wider than the
actual item size, making it look broken.
Removing this just keeps the document size same width as
the widget itself, making it more sensible and less broken looking.
|
|
Remove unused `referenceItem` variable in KFileItemModelRolesUpdater
and add Q_FALLTHROUGH() annotation for intentional SingleSelection →
MultiSelection fallthrough in KItemListController.
|
|
Reset m_hoveredItem when a new selection is set, preventing the
information panel from showing outdated hover data after selecting
a different item
|
|
|
|
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
|
|
|
|
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
|
|
(cherry picked from commit 707947a73a6c31097960a94c07aa0ee608ad4a65)
|
|
highlightEntireRow is true"
This reverts commit 17e55c976581aa58b4500e426fb2925a3d45c308, making drag and drops on non-selected item rows count as drops on the folder of the view, which was the intended behaviour.
The commit being reverted here makes it very difficult to drag and drop items between Dolphin windows, tabs, and split views, whenever the view is full of items. Drag and drop should be a natural and easy interaction with the file system, aiming at the margins to the sides of the view to even be able to drop an item is IMO very uncomfortable. This was also directly pointed out by Cristoph Feck in the bug report https://bugs.kde.org/show_bug.cgi?id=515439#c4.
The bug report also has only one active requester and no duplicates. This is insufficient reason to encumber such a basic behaviour as drag and drop.
|
|
to change menuBar visibility
The menubar check was defined by menubar isHidden var. The logic has
been reverted. The toggleShowMenuBar func was simply inverting the
isVisible var. Now it's being set the menubar isChecked value.
This led to testedObjectsSizeAfterTraversingForwards=10 instead of 11
(apparently there was a phantom object), so adjust the comparation
in dolphinmainwindowtest.
BUG: 492298
|
|
Natural sorting already handled plain numeric chunks, but names containing dots between numeric segments were still ordered lexically in important cases. This broke expected ordering for decimal-style names like 0.09 and 0.1, and for version-like names such as v1.2.3 and v1.2.10.
Teach KFileItemModel's natural string comparison to recognize dotted numeric chains instead of relying solely on QCollator's numeric mode. Compare two-part numeric chains (e.g. 0.09 vs 0.1) as decimal values, and compare longer chains segment by segment like version numbers, while still treating real file extensions separately so names like 1.09.txt keep working correctly.
Add a direct unit test for KFileItemModel::stringCompare covering decimal-style names, version-like dotted numeric names, numeric basenames with extensions, leading-dot names, and the non-natural sorting fallback.
BUG: 411707
|
|
non-Breeze QStyles
For non-Breeze QStyles Dolphin is currently drawing the full highlight effect for items even when they are deselected.
The issues is that it treats keyboard focus as the same state as a selected state, resulting in a persisting highlight effect.
This patch adds and extra check to paint `State_Selected` only when `m_selected` is true, thereby fixing the problem.
**TEST PLAN**
Tested with Oxygen, Fusion, Kvantum, Darkly, MS Windows 9x.
- all of the styles had the issue with the full selected state persisting on mouse deselect
- after this change all of the styles lost the full selected state and retained only their keyboard focus state
**SCREENSHOTS**
Before (MS Windows 9x):

After (MS Windows 9x):

|
|
Disables auto-repeat on the action for refreshing Dolphin's file list, preventing flickering, when holding F5 pressed/long.
BUG: 514209
|
|
We should avoid custom painting since that will cause issues with
Union and other styles. We however still use the old hardcoded painting
for Breeze style, which can be removed when Breeze 6.8 is released.
For other styles, we draw using the primitives the QStyle provides.
Also make the icon items less wider for better information density.
CCBUG: 508294
BUG: 508465
|
|
In navigator in frame mode (as opposed to inToolbar).
Once we set a colspan and rowStretch on the main widget (the splitter),
we don't need to pass bogus rowspan/colspan values to addWidget.
This prevents some warnings.
`QGridLayout: Multi-cell fromRow greater than toRow`
|
|
Inline rename was canceled when the edited item scrolled out of view. Scrolling could both finish the edit and recycle the item widget, causing the typed name to be lost.
Keep the inline rename editor alive while the item is temporarily offscreen. Update the editor geometry on scroll, avoid recycling the widget while it is being edited, and suppress the temporary FocusOut triggered by hiding the editor.
If the user interacts with another item while the edited one is offscreen, finish the hidden edit first so normal selection behavior is preserved.
BUG: 506884
|
|
Parent the QMediaPlayer and QAudioOutput so they can get deleted with
their parent.
|
|
To allow to cancel an edit role when the widget starts being animated.
This was hooked to a function not a signal.
|
|
|
|
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
|
|
When no device was found or no storage within.
|
|
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
|
|
Sometimes the selection is empty or not updated properly. Better be
safe than sorry and make sure the items are always up to date.
This amends commit db49ac4e
|
|
For this widget.
If a file is being moved due due to external events, an animation may
start, in which case we better cancel the edit.
If we hook this at the animation start instead of checks spread out, we
can't miss this cancellation anymore.
KStandardItemListWidget gets a cancelRoleEditing slot to cleanly cancel
editing and clean up its internal state.
|
|
When switching tabs with split view enabled and the filter bar visible,
a storm of activation calls is triggered and at the end signal/slot
connections for both views is a mess (no listeners, navigation buttons
linked to unfocused view etc.).
Disconnect DolphinTabPage slot when it changes its own state.
BUG: 508554, 512011, 508405, 511076, 503576
|
|
search results
When navigating away from a search result, hiding the search bar unintentionally emitted urlChangeRequested(searchPath). This inserted an extra navigation step into the history, causing the “Back” button to require multiple presses to return to the search results.
Introduce Search::Bar::HideBehavior to allow callers to hide the search bar without triggering a URL change, and use it when the bar is automatically hidden due to non-search navigation.
BUG: 515236
|
|
The search field moves upwards and becomes obscured when pressing navigation keys like the down arrow. This happens because the underlying QScrollArea processes keyboard navigation events, shifting the visible viewport even when scrollbars are completely hidden and disabled.
Move the event filter from the contents container directly to the QScrollArea (m_contentsContainerParent) and its viewport. Update the filter to intercept Qt::Key_Up and Qt::Key_Down events, preventing the scroll area from handling these inputs.
BUG: 510469
|
|
|
|
Prevent a mem-leak detected with asan.
|
|
|
|
Currently, Dolphin's filter bar defaults to plain text, but it actually has a hidden regex functionality too: it tries to auto-detect and switch to a regular expression if characters like '*', '?', or '[' are present in the search string.
This approach has a couple of issues. First, the regex/wildcard functionality is completely hidden from the user. Second, the auto-detection is flawed because those are perfectly valid characters in Linux filenames. If a user tries to filter for a file literally named [draft].txt, the auto-switching kicks in and causes unexpected behavior.
This MR fixes this by making the filtering modes explicit through a ComboBox at the side of the filter bar, with the options 'Plain Text', 'Glob' and 'Regular Expression'. It also adds a button to toggle the case sensitive matching. A visual feedback for when the user is inputting an invalid expression has also been implemented by turning the bar background red and making appear an error symbol.
|
|
Adds ZoomLevel flag to the directory and uses it instead of global settings when globalViewProps is set to false.
CCBUG: 169405
|
|
|
|
Explicitly grabGesture TapAndHoldGesture to be able to ignore them and
thus prevent bubbling the event to the parent widget.
BUG: 431307
|
|
This removes the .desktop suffix to match https://invent.kde.org/utilities/kfind/-/blob/master/src/org.kde.kfind.appdata.xml?ref_type=heads#L3
BUG: 510370
|
|
KCModuleLoader when passed in a parent Widget will add a layout to it.
The internal widget is added to it.
When we don't pass a parentWidget, this layout leaks.
Instead don't add a layout ourselves, let the one in KCModuleLoader do
the work.
Detected by asan.
|
|
|
|
Prevents a mem-leak on exit spotted by -fsanitize/asan.
|
|
BUG: 510829
|
|
BUG: 433937
|
|
So the selection manager can consider the selection has changed.
This makes sense as when editing file name you can only have a single item selected.
BUG: 453262
|
|
Like with leftclick, we should check this for rightclick.
If user has highlightEntireRow enabled and right clicks an
item, the item should be activated.
BUG: 508356
|
|
Certain urls lead to an infinite loop that causes dolphin to halt. Any url that starts with `file:` and the path doesn't have first `/` will lead to this. For example: `file:test` or `file:another/test`. If dolphin somehow saves this state, the program halt right at the start.
Rename the function to make its usage less confusing.
|
|
Limit the width of text labels.
|