┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2026-06-26GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-25kfileitemmodel: Avoid zero-as-null-pointer-constant warnings in natural sortMéven Car
The natural sort comparison helpers compare Qt::strong_ordering values against the literal 0. The compiler reads that 0 as a null pointer constant and warns under -Wzero-as-null-pointer-constant. Use the named ordering helpers is_lt, is_gt and is_neq instead, which express the same checks without a literal 0. The plain integer comparisons in the surrounding code are left as they are.
2026-06-25GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-24GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-22GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-21flatpak: disable libssh in konsole moduleSebastian Englbrecht
konsole commit 55ee7c6b added optional libssh support and already disabled it in konsole's own flatpak manifest, but the dolphin flatpak manifest was not updated accordingly, breaking the flatpak build.
2026-06-21GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-20GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-19GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-18tests: speed up testInsertAfterExpandMéven Car
The test created a file in a collapsed subtree and then waited five seconds for an items-inserted signal that must never arrive, spending that whole time on every run and making kfileitemmodeltest about three times slower than it needs to be. Create a file in the watched top directory instead and wait for its insertion. Once that arrives the directory change has been processed and the model has settled, so the collapsed file has had its chance to appear and only the expected items are present. The sentinel stays as a top-level sibling, so the later re-expansion expects it alongside the restored subtree. testInsertAfterExpand drops from about 4.9 seconds to 1.6 seconds and the whole kfileitemmodeltest from about 7.2 seconds to 2.4 seconds.
2026-06-18tests: force the English locale for dolphinmainwindowtestMéven Car
testWindowTitle compares the window title against fixed strings such as "Home" and "Trash". On a machine configured for another language the title comes back translated, for example "Dossier Personnel", and the test fails. Set the language environment variables to English in main(), before QApplication is constructed and before any translation is loaded, so the comparisons are deterministic regardless of the machine's configured language.
2026-06-18viewproperties: detect read-only directories on WindowsMéven Car
On Windows QFileInfo::isWritable() returns true for a directory that carries the read-only attribute, because the attribute does not prevent creating child files. It does prevent writing the directory's own extended attribute, the Alternate Data Stream where the view properties are stored, so the save fails with access denied and the settings are lost. Detect the read-only attribute with GetFileAttributesW and store the view properties in the destination directory instead, the same way a directory without write permission is handled on other platforms. The read-only directory test checks that the properties land in the destination directory.
2026-06-18tests: exclude two tests on windowsSebastian Englbrecht
dolphinmainwindowtest requires a real window server no_bare_qwait_in_tests requires bash and only serves as lint, so linux only is OK
2026-06-18tests: fix or skip tests on windowsSebastian Englbrecht
2026-06-18dolphintabbar: Add actions to close tabs to the left or rightRamil Nurmanov
CCBUG: 499717
2026-06-18GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-17GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-16Add "Focus Other View" actionFelix Ernst
Replace the setting "Switch between views with Tab key" with a dedicated "Focus Other View" action (which can be bound to the Tab key if the user wants to). The "Focus Other View" action moves the keyboard focus to the inactive split view. When there is no other view, split view is triggered instead. The action is located in `Menubar>View`. ### Motivation The Tab key is essential for keyboard navigation within an application. The old "Switch between views with Tab key" setting forces users to give up on the intended purpose of the Tab key, which means many keyboard-bound users currently do not have a way to switch between views when using the "Split" feature. The dedicated "Focus Other View" action gives users more control, and they can change the keyboard shortcut as they are used to.
2026-06-16GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-16SVN_SILENT made messages (.desktop file) - always resolve oursl10n daemon script
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"
2026-06-15search/chip: Draw chip with QStyle instead of hardcoding BreezeFilip Fila
Currently the code for the Dolphin chip, that gets used for filters with file indexing, is hardcoding Breeze. We want it to support other styles too, all the while retaining the desired appearance for Breeze. The port to use the `FrameLineEdit` accomplishes that. The results are that: - Non-Breeze themes now get to style the chip properly - the code is cleaner - Breeze even looks better since there is no more of this hover glitch: ![image](/uploads/03707ad2e76cf702757c2e66ab49be34/image.png){width=173 height=72} | Breeze before | Breeze after | | ------ | ------ | | ![Dolphin-searchChip_Breeze-before_](/uploads/ef2809514e973ce5306ce78aca127cb9/Dolphin-searchChip_Breeze-before_.png){width=613 height=120} | ![Dolphin-searchChip_Breeze-after_](/uploads/ce0bcdc4ac766255e3d06627b9740085/Dolphin-searchChip_Breeze-after_.png){width=642 height=139} | | Oxygen before | Oxygen after | | ------ | ------ | | ![Dolphin-searchChip_Oxygen-before_](/uploads/0b32b7a6d7849a13f46ed0e9a8c10b38/Dolphin-searchChip_Oxygen-before_.png){width=616 height=106} | ![Dolphin-searchChip_Oxygen-after_](/uploads/9fbce947e0c65726ddc118217ac34884/Dolphin-searchChip_Oxygen-after_.png){width=621 height=103} | | MSWindows9x before | MSWindows9x after | | ------ | ------ | | ![Dolphin-searchChip_MSWindows-before_](/uploads/c8b7823f74de708e95eef8380eafb231/Dolphin-searchChip_MSWindows-before_.png){width=618 height=99} | ![Dolphin-searchChip_MSWindows-after_](/uploads/d1f1d390ffabbc21e3d734c7816b4fd0/Dolphin-searchChip_MSWindows-after_.png){width=606 height=89} |
2026-06-15informationpanel: abort the folder stat job when the panel is destroyedMéven Car
The stat job started by showItemInfo() to describe the current folder ran to completion on its own. When the panel was destroyed while the job was still in flight, the job and the UI delegate it created outlived the panel. Parent the job to the panel so QObject destruction aborts it instead.
2026-06-15GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-14Replace the itemsChanged disconnect/connect dance with a guardMéven Car
The updater must not react to its own setData() changes, or it would resolve the roles again. Instead of disconnecting slotItemsChanged() around every setData() and reconnecting (a dozen times), add a setModelData() helper that sets a guard while calling setData(), and make slotItemsChanged() return early while it is set. The view still gets itemsChanged and repaints. This also drops a stray disconnect of itemsMoved (never reconnected) that a hover-sequence block did while duplicating the itemsChanged connection.
2026-06-14dolphinmainwindowtest: assert the thumbnail, not a fresh preview, after renameMéven Car
testThumbnailAfterRename waited for KFileItemModelRolesUpdater::previewJobFinished after renaming a.jpg to b.jpg. That signal is only emitted when a new preview is generated successfully (slotGotPreview), but a rename keeps the file's content and its already-correct thumbnail, so whether a fresh preview job runs at all is timing- and platform-dependent. On FreeBSD CI none is produced, so the wait timed out. Assert the actual outcome instead: the renamed item still shows a non-null preview pixmap. This passes whether the thumbnail is regenerated, inherited across the rename, or cache-served, and still fails if a rename ever drops the preview.
2026-06-14GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-13smoothscroller: always emit scrollingStopped from scrollToMéven Car
When scrollTo() is asked to move to the position the scrollbar already holds (clamped, e.g. an item at the bottom, or a sub-pixel offset), no animation runs and scrollingStopped() was never emitted. Callers waiting for it stayed blocked: KItemListView::scrollToItem() delegates to scrollTo for any non-zero offset, and DolphinView::renameSelectedItems() only opens the inline rename editor once scrollingStopped() arrives. So inline rename silently did nothing for the affected items. Emit scrollingStopped() in the no-op case too, and add a regression test.
2026-06-13remove version guards below the build minimumsMéven Car
KIO_VERSION and KFILEMETADATA_VERSION checks up to 6.23 are always true given the Qt 6.4 / KF 6.23 minimum versions.
2026-06-13versioncontrol: fix use-after-free of the current pluginMéven Car
searchPlugin returns one of the observer-owned m_plugins, so m_currentPlugin always aliases an entry in that list. Deleting m_currentPlugin in setModel freed that object while leaving a dangling pointer in m_plugins, which the next searchPlugin or actions call would dereference. setModel(nullptr) runs on every directory change, so this was reachable when leaving a versioned directory. Make the observer the real owner: parent the plugins to it so QObject deletes them, stop deleting the shared plugin in setModel (just clear the current selection), and drop the matching delete in the destructor.
2026-06-13setfoldericon: fix leak of the submenuMéven Car
ButtonsWithSubMenuWidgetAction owned the QMenu (no parent, setMenu does not take ownership) but had no destructor, so every folder context menu leaked one QMenu and its overflow actions. Add a destructor that deletes it.
2026-06-13Add A restore view properties to defaults buttonMéven Car
The button allows to restore to defaults, in case you are using the per-folder view properties settings. The button disables or enables itself whether or not it matches the defaults view settings.
2026-06-13viewproperties: ensure not to remove defaults view propertiesMéven Car
As the global file defines the defaults, it will always match the isDefault filter. In this case prevent the filter to remove its settings.
2026-06-13GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-12GIT_SILENT CI - Flatpak - Update VersionsJustin Zobel
OUTDATED: ark-25.08.3.tar.xz Upgraded to: URL: https://download.kde.org/stable/release-service/26.04.2/src/ark-26.04.2.tar.xz Version: 26.04.2 OUTDATED: lmdb.git Upgraded to: URL: https://github.com/LMDB/lmdb.git Commit: 69087ced3cb6082f7dcfb4fc2dcaa3b68a7e2e8c Tag: LMDB_0.9.35 Branch: None Version: 0.9.35 OUTDATED: vlc-3.0.22.tar.xz Upgraded to: URL: https://get.videolan.org/vlc/3.0.23/vlc-3.0.23.tar.xz Version: 3.0.23
2026-06-12GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-11Allow grouping by a separate criterionRamil Nurmanov
Add an explicit group role to Dolphin views so items can be grouped independently from the active sort role. Previously, Dolphin's grouped view always used the current sort role as the grouping criterion. This meant that grouping and sorting were tied together, for example grouping by type also required sorting by type. This change adds a separate Group By menu. It replaces the previous Show in Groups toggle and allows the user to disable grouping, keep the old Same as Sort behavior, or explicitly group by a selected criterion. When an explicit group role is set, the model keeps groups stable and uses the normal sort role as a secondary key inside each group. The roles updater also receives the active group role, so roles used only for grouping are still updated correctly. BUG: 416134 CCBUG: 510670 CCBUG: 513235 CCBUG: 46393
2026-06-10kitemviews: handle macOS pixel wheel scrolling immediatelyKetal Wang
2026-06-06GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-05GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-04DolphinNavigatorsWidgetAction: Let non-Breeze QStyles style the non-toolbar ↵Filip Fila
navbar how they want Currently when Dolphin's location bar is moved from the main toolbar, it stops being a nice `FrameLineEdit` that QStyles can style as they please. That's because the current code is only adjusted for Breeze, which wants to fill the entire navbar frame with a plain rectangle. Unfortunately, non-Breeze styles suffer from bad looks because this Breeze design is applied for them too. In order to fix this, this MR restores the styling power back to QStyles by removing the rectangle, all the while keeping it for Breeze. | Before (Breeze) | After (Breeze) | | ------ | ------ | |![DolphinURL-before_Breeze_](/uploads/b526076352023862e2f17cef744802a0/DolphinURL-before_Breeze_.png){width=698 height=134} | ![DolphinURL-after_Breeze_](/uploads/eb60d5c2a6dff129c4d200fef5f8c5ab/DolphinURL-after_Breeze_.png){width=715 height=138} | | Before (Oxygen) | After (Oxygen) | | ------ | ------ | | ![DolphinURL-before_Oxygen_](/uploads/2d8f19debbd5410b8f0882ed20b34f83/DolphinURL-before_Oxygen_.png){width=714 height=114} | ![DolphinURL-after_Oxygen_](/uploads/fc6a1bed3de647534494951a7b113d5e/DolphinURL-after_Oxygen_.png){width=687 height=129} | | Before (MSWindows9x) | After (MSWindows9x) | | ------ | ------ | | ![DolphinURL-before_MSWindows9x_](/uploads/88ebd20a2be5d9052165ea417517b4a3/DolphinURL-before_MSWindows9x_.png){width=715 height=107} | ![DolphinURL-after_MSWindows9x_](/uploads/575e7a944238113714c70b7705b3854a/DolphinURL-after_MSWindows9x_.png){width=702 height=100} | | Before (Darkly) | After (Darkly) | | ------ | ------ | | ![DolphinURL-before_Darkly_](/uploads/76f28b8175498b6a611953c05554c4e8/DolphinURL-before_Darkly_.png){width=675 height=123} | ![DolphinURL-after_Darkly_](/uploads/7b9b15eaab10ee7731d55c60af7591bf/DolphinURL-after_Darkly_.png){width=705 height=144} | | Before (Fusion) | After (Fusion) | | ------ | ------ | | ![DolphinURL-before_Fusion_](/uploads/de27a5028986d797407bfe66b2e9916b/DolphinURL-before_Fusion_.png){width=701 height=118} | ![DolphinURL-after_Fusion_](/uploads/7f5c7acd1c433fcba8b96e402cf12a21/DolphinURL-after_Fusion_.png){width=692 height=122} | | Before (Kvantum) | After (Kvantum) | | ------ | ------ | | ![DolphinURL-before_Kvantum](/uploads/21c2126044ba31c3bc00610e34a71ec1/DolphinURL-before_Kvantum.png){width=697 height=135} | ![DolphinURL-after_Kvantum](/uploads/ea5287e7ba59e1f9b449c1b002d3b634/DolphinURL-after_Kvantum.png){width=700 height=123} | BUG: 518285 FIXED-IN:
2026-06-04GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-03SVN_SILENT made messages (.desktop file) - always resolve oursl10n daemon script
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"
2026-06-03GIT_SILENT made messages (after extraction)l10n daemon script
2026-06-02GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-06-02SVN_SILENT made messages (.desktop file) - always resolve oursl10n daemon script
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"
2026-06-01kfileitemmodel: prefer prefix over postfix increment for iteratorSebastian Englbrecht
Postfix increment creates an unnecessary temporary copy.
2026-06-01actionwithwidget: use QPointer::data() for explicit pointer extractionSebastian Englbrecht
Returning a QPointer<T> where T* is expected relies on an implicit conversion that cppcheck cannot model correctly. Use .data() to make the intent explicit.
2026-06-01dolphinmainwindow,dolphinview: clarify QPointer semantics around exec()Sebastian Englbrecht
exec() runs a nested event loop that can destroy the parent widget, so the post-exec null-check on the QPointer is intentional, not redundant. dolphinmainwindow: replace `if (contextMenu) deleteLater()` with `delete contextMenu`. QPointer returns nullptr for a destroyed object, making delete a safe no-op. dolphinview: capture the menu as a raw pointer for pre-exec setup; reserve the QPointer for the post-exec liveness check and deletion.
2026-06-01GIT_SILENT Sync po/docbooks with svnl10n daemon script
2026-05-31dolphinview: Unselect navigator when click on backgroundFlorian RICHER