<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/src/views, branch master</title>
<subtitle>Patched KDE Dolphin with Pixel Scaling</subtitle>
<id>https://fiftyfourth.xyz/git/dolphin/atom/src/views?h=master</id>
<link rel='self' href='https://fiftyfourth.xyz/git/dolphin/atom/src/views?h=master'/>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/'/>
<updated>2026-06-18T10:30:38Z</updated>
<entry>
<title>viewproperties: detect read-only directories on Windows</title>
<updated>2026-06-18T10:30:38Z</updated>
<author>
<name>Méven Car</name>
<email>meven@kde.org</email>
</author>
<published>2026-06-18T09:08:39Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=922ccb27fba27328741aafdf6bd7a4258d193e88'/>
<id>urn:sha1:922ccb27fba27328741aafdf6bd7a4258d193e88</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Add "Focus Other View" action</title>
<updated>2026-06-16T20:08:24Z</updated>
<author>
<name>Felix Ernst</name>
<email>felixernst@kde.org</email>
</author>
<published>2026-06-16T20:08:24Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=12b4a8a91e0b9b8dd00816b5fb84e8e09000afcd'/>
<id>urn:sha1:12b4a8a91e0b9b8dd00816b5fb84e8e09000afcd</id>
<content type='text'>
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&gt;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.
</content>
</entry>
<entry>
<title>remove version guards below the build minimums</title>
<updated>2026-06-13T15:00:09Z</updated>
<author>
<name>Méven Car</name>
<email>meven@kde.org</email>
</author>
<published>2026-06-13T14:28:08Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=d49b4aa1bc826bc2343f518af6712981228f1c8e'/>
<id>urn:sha1:d49b4aa1bc826bc2343f518af6712981228f1c8e</id>
<content type='text'>
KIO_VERSION and KFILEMETADATA_VERSION checks up to 6.23 are always true
given the Qt 6.4 / KF 6.23 minimum versions.
</content>
</entry>
<entry>
<title>versioncontrol: fix use-after-free of the current plugin</title>
<updated>2026-06-13T14:34:10Z</updated>
<author>
<name>Méven Car</name>
<email>meven@kde.org</email>
</author>
<published>2026-06-13T13:14:39Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=99c87fe4314d392ae8d3e4cf9c05e3f014322608'/>
<id>urn:sha1:99c87fe4314d392ae8d3e4cf9c05e3f014322608</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Add A restore view properties to defaults button</title>
<updated>2026-06-13T10:24:37Z</updated>
<author>
<name>Méven Car</name>
<email>meven@kde.org</email>
</author>
<published>2026-05-03T12:53:01Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=70f34211cb4ad1f3f6170ded062bafff85d66643'/>
<id>urn:sha1:70f34211cb4ad1f3f6170ded062bafff85d66643</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>viewproperties: ensure not to remove defaults view properties</title>
<updated>2026-06-13T10:03:44Z</updated>
<author>
<name>Méven Car</name>
<email>meven@kde.org</email>
</author>
<published>2026-05-03T12:50:24Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=169332e5691267fd69ac20ac2b1aa06441c588db'/>
<id>urn:sha1:169332e5691267fd69ac20ac2b1aa06441c588db</id>
<content type='text'>
As the global file defines the defaults, it will always match the
isDefault filter.

In this case prevent the filter to remove its settings.
</content>
</entry>
<entry>
<title>Allow grouping by a separate criterion</title>
<updated>2026-06-11T10:30:18Z</updated>
<author>
<name>Ramil Nurmanov</name>
<email>ramil2004nur@gmail.com</email>
</author>
<published>2026-06-04T20:06:12Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=989c0f4f0319f7d8e573c8a88fe8011bd3315466'/>
<id>urn:sha1:989c0f4f0319f7d8e573c8a88fe8011bd3315466</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>dolphinmainwindow,dolphinview: clarify QPointer semantics around exec()</title>
<updated>2026-06-01T09:04:16Z</updated>
<author>
<name>Sebastian Englbrecht</name>
<email>sebastian.englbrecht@tum.de</email>
</author>
<published>2026-05-31T16:59:36Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=44973c9dd016569e643a73148c32bd1a0b01d71d'/>
<id>urn:sha1:44973c9dd016569e643a73148c32bd1a0b01d71d</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>dolphinview: Unselect navigator when click on background</title>
<updated>2026-05-31T08:57:56Z</updated>
<author>
<name>Florian RICHER</name>
<email>florian.richer@protonmail.com</email>
</author>
<published>2026-05-15T15:29:46Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=2a72145eb09276a4576762b74cb976fcd4550e87'/>
<id>urn:sha1:2a72145eb09276a4576762b74cb976fcd4550e87</id>
<content type='text'>
</content>
</entry>
<entry>
<title>dolphinview,mountpointobserver: kill in-flight KIO jobs in destructor</title>
<updated>2026-05-28T08:59:00Z</updated>
<author>
<name>Sebastian Englbrecht</name>
<email>sebastian.englbrecht@tum.de</email>
</author>
<published>2026-05-23T15:40:25Z</published>
<link rel='alternate' type='text/html' href='https://fiftyfourth.xyz/git/dolphin/commit/?id=714830f8dda873fbefa6de9704c90220e16a6133'/>
<id>urn:sha1:714830f8dda873fbefa6de9704c90220e16a6133</id>
<content type='text'>
Both objects start KIO jobs that can outlive the object if it is
destroyed before the job finishes. Store the pending job and call
kill(Quietly) in the destructor to avoid leaks and dangling callbacks.
</content>
</entry>
</feed>
