From 2e665e1b513b3f7c082bedc8faaf47bee8008c73 Mon Sep 17 00:00:00 2001 From: Pan Zhang Date: Sat, 23 May 2026 18:25:19 +0800 Subject: viewproperties: respect saved properties for special folders with global view props enabled When "Use common display style for all folders" is enabled, the useDefaultSettings condition was always true because useGlobalViewProps was the first term in the OR chain. This caused special folders controlled by useSearchView, useTrashView, and useRecentDocumentsView to reset to their default view on every load, overriding any user customization. Restrict the unconditional default-apply to non-special folders only. For special folders, the existing timestamp-based check handles the logic correctly, and the fallback in the else branch still applies defaults when no saved properties exist (first visit). BUG: 520089 --- src/tests/viewpropertiestest.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/tests') diff --git a/src/tests/viewpropertiestest.cpp b/src/tests/viewpropertiestest.cpp index a39abaef2..c4cc9cc41 100644 --- a/src/tests/viewpropertiestest.cpp +++ b/src/tests/viewpropertiestest.cpp @@ -31,6 +31,7 @@ private Q_SLOTS: void testExtendedAttributeFull(); void testUseAsDefaultViewSettings(); void testUseAsCustomDefaultViewSettings(); + void testSpecialFolderPropsPreservedWithGlobalViewProps(); private: bool m_globalViewProps; @@ -444,6 +445,33 @@ void ViewPropertiesTest::testUseAsCustomDefaultViewSettings() QCOMPARE(testDirProperties.data()->viewMode(), DolphinView::Mode::DetailsView); } +/** + * Test that special folders preserve user-customized view properties + * when global view props is enabled. Uses trash:/// as representative example. + */ +void ViewPropertiesTest::testSpecialFolderPropsPreservedWithGlobalViewProps() +{ + GeneralSettings::self()->setGlobalViewProps(true); + GeneralSettings::self()->save(); + + const QUrl trashUrl(QStringLiteral("trash:///")); + + // First visit: customize the view mode to IconsView + // (trash default is DetailsView) + { + ViewProperties props(trashUrl); + QCOMPARE(props.viewMode(), DolphinView::DetailsView); // default + props.setViewMode(DolphinView::IconsView); + props.save(); + } + + // Second visit: the custom view mode should be preserved + { + ViewProperties props(trashUrl); + QCOMPARE(props.viewMode(), DolphinView::IconsView); + } +} + QTEST_GUILESS_MAIN(ViewPropertiesTest) #include "viewpropertiestest.moc" -- cgit v1.3.1