]> cloud.milkyroute.net Git - dolphin.git/commitdiff
use KSycoca for updating OpenPreferredSearchTool action
authorPiotr Henryk Dabrowski <phd@phd.re>
Sun, 24 May 2020 14:25:14 +0000 (08:25 -0600)
committerNate Graham <nate@kde.org>
Sun, 24 May 2020 14:26:25 +0000 (08:26 -0600)
Summary:
Remove all random updates of OpenPreferredSearchTool action, and
use KSycoca for updating it as discussed in https://phabricator.kde.org/D22594#663847

Enhancement for D29441 for bug #420911 caused by D22594.
The bug was fixed by D29442.

CCBUG: 420911

Test Plan:
```
$ cd ${KDE_INSTALL_DIR}/usr/share/applications

$ sudo mv org.kde.kfind.desktop org.kde.kfind.desktop_
$ kbuildsycoca5

$ sudo mv org.kde.kfind.desktop_ org.kde.kfind.desktop
$ kbuildsycoca5
```

Reviewers: broulik, elvisangelaccio, ngraham, #dolphin

Reviewed By: elvisangelaccio, #dolphin

Subscribers: anthonyfieroni, kfm-devel

Tags: #dolphin

Differential Revision: https://phabricator.kde.org/D29568

src/dolphinmainwindow.cpp
src/dolphinmainwindow.h

index f374db41ded32c1a4a169a4963bea4a32d61903c..dd1dcdac5df78a3a579b7b81afd0a4b879a0cff2 100644 (file)
@@ -65,6 +65,7 @@
 #include <KShell>
 #include <KStandardAction>
 #include <KStartupInfo>
+#include <KSycoca>
 #include <KToggleAction>
 #include <KToolBar>
 #include <KToolBarPopupAction>
@@ -203,7 +204,9 @@ DolphinMainWindow::DolphinMainWindow() :
 
     setupWhatsThis();
 
-    QTimer::singleShot(0, this, &DolphinMainWindow::setupUpdateOpenPreferredSearchToolAction);
+    connect(KSycoca::self(), QOverload<>::of(&KSycoca::databaseChanged), this, &DolphinMainWindow::updateOpenPreferredSearchToolAction);
+
+    QTimer::singleShot(0, this, &DolphinMainWindow::updateOpenPreferredSearchToolAction);
 }
 
 DolphinMainWindow::~DolphinMainWindow()
@@ -969,29 +972,6 @@ QPointer<QAction> DolphinMainWindow::preferredSearchTool()
     return action;
 }
 
-void DolphinMainWindow::setupUpdateOpenPreferredSearchToolAction()
-{
-    QAction* openPreferredSearchTool = actionCollection()->action(QStringLiteral("open_preferred_search_tool"));
-    const QList<QWidget*> widgets = openPreferredSearchTool->associatedWidgets();
-    for (QWidget* widget : widgets) {
-        QMenu* menu = qobject_cast<QMenu*>(widget);
-        if (menu) {
-            connect(menu, &QMenu::aboutToShow, this, &DolphinMainWindow::updateOpenPreferredSearchToolAction);
-        }
-    }
-
-    // Update the open_preferred_search_tool action *before* the Configure Shortcuts window is shown,
-    // since this action is then listed in that window and it should be up-to-date when it is displayed.
-    // This update is instantaneous if user made no changes to the search tools in the meantime.
-    // Maybe all KStandardActions should defer calls to their slots, so that we could simply connect() to trigger()?
-    connect(
-        actionCollection()->action(KStandardAction::name(KStandardAction::KeyBindings)), &QAction::hovered,
-        this, &DolphinMainWindow::updateOpenPreferredSearchToolAction
-    );
-
-    updateOpenPreferredSearchToolAction();
-}
-
 void DolphinMainWindow::updateOpenPreferredSearchToolAction()
 {
     QAction* openPreferredSearchTool = actionCollection()->action(QStringLiteral("open_preferred_search_tool"));
@@ -1165,7 +1145,6 @@ void DolphinMainWindow::updateControlMenu()
     addActionToMenu(ac->action(QStringLiteral("show_filter_bar")), menu);
     addActionToMenu(ac->action(QStringLiteral("open_preferred_search_tool")), menu);
     addActionToMenu(ac->action(QStringLiteral("open_terminal")), menu);
-    connect(menu, &QMenu::aboutToShow, this, &DolphinMainWindow::updateOpenPreferredSearchToolAction);
 
     menu->addSeparator();
 
index 940a03d83d13623eeb414450858d1b8d21044e6e..dcd73c6a75755a339c111e09280ee9dacec00ba9 100644 (file)
@@ -353,9 +353,6 @@ private slots:
      */
     void toggleShowMenuBar();
 
-    /** Sets up updates for "Open Preferred Search Tool" action. */
-    void setupUpdateOpenPreferredSearchToolAction();
-
     /** Updates "Open Preferred Search Tool" action. */
     void updateOpenPreferredSearchToolAction();