]> cloud.milkyroute.net Git - dolphin.git/commitdiff
settings: Fix the Use Current Location button
authorAkseli Lahtinen <akselmo@akselmo.dev>
Fri, 30 Aug 2024 10:54:56 +0000 (10:54 +0000)
committerAkseli Lahtinen <akselmo@akselmo.dev>
Fri, 30 Aug 2024 10:54:56 +0000 (10:54 +0000)
During the Dolphin settings revamp
(https://invent.kde.org/system/dolphin/-/commit/489b56b68bb29e81337e115c490eea4403001b71?)
this QUrl had been forgot to add back so that the
FoldersTabsSettingsPage knows what is the current url.

This change checks for the main window of dolphin, then gets
the URL of it whenever useCurrentLocation is called.

However, when this is used as KCM, the button is not
created, since there it doesn't make sense.

BUG:491753

src/CMakeLists.txt
src/settings/interface/folderstabssettingspage.cpp

index bbf882a8a7c644a7eaae046b6c134b3fce23aa6b..ce5b5461319dbb3c7792d0944f12cbecd470441d 100644 (file)
@@ -526,6 +526,7 @@ if(NOT WIN32)
     # The settings are still accessible from the hamburger menu
     add_library(kcm_dolphinviewmodes MODULE)
     add_library(kcm_dolphingeneral MODULE)
+    target_compile_definitions(kcm_dolphingeneral PUBLIC IS_KCM)
 
     target_sources(kcm_dolphinviewmodes PRIVATE
         settings/kcm/kcmdolphinviewmodes.cpp
index 6fad3d1c2df0d0ff1ea0f25aa2fceb3a3a9c138c..0212f624c2bac4bacc082c40418bd4c4b5e7baed 100644 (file)
@@ -13,6 +13,9 @@
 #include <KMessageBox>
 #include <KProtocolManager>
 
+#ifndef IS_KCM
+#include <QApplication>
+#endif
 #include <QButtonGroup>
 #include <QCheckBox>
 #include <QFileDialog>
@@ -71,9 +74,11 @@ FoldersTabsSettingsPage::FoldersTabsSettingsPage(QWidget *parent)
     QHBoxLayout *buttonBoxLayout = new QHBoxLayout(m_buttonBoxLayoutContainer);
     buttonBoxLayout->setContentsMargins(0, 0, 0, 0);
 
+#ifndef IS_KCM
     QPushButton *useCurrentButton = new QPushButton(i18nc("@action:button", "Use Current Location"));
     buttonBoxLayout->addWidget(useCurrentButton);
     connect(useCurrentButton, &QPushButton::clicked, this, &FoldersTabsSettingsPage::useCurrentLocation);
+#endif
     QPushButton *useDefaultButton = new QPushButton(i18nc("@action:button", "Use Default Location"));
     buttonBoxLayout->addWidget(useDefaultButton);
     connect(useDefaultButton, &QPushButton::clicked, this, &FoldersTabsSettingsPage::useDefaultLocation);
@@ -241,6 +246,20 @@ void FoldersTabsSettingsPage::selectHomeUrl()
 
 void FoldersTabsSettingsPage::useCurrentLocation()
 {
+#ifndef IS_KCM
+    DolphinMainWindow *mainWindow = nullptr;
+    const auto topLevelWidgets = QApplication::allWidgets();
+    for (const auto widget : topLevelWidgets) {
+        if (qobject_cast<DolphinMainWindow *>(widget)) {
+            mainWindow = static_cast<DolphinMainWindow *>(widget);
+            break;
+        }
+    }
+
+    if (mainWindow) {
+        m_url = mainWindow->activeViewContainer()->url();
+    }
+#endif
     m_homeUrl->setText(m_url.toDisplayString(QUrl::PreferLocalFile));
 }