use KSycoca for updating OpenPreferredSearchTool action

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
This commit is contained in:
Piotr Henryk Dabrowski 2020-05-24 08:25:14 -06:00 committed by Nate Graham
parent 99cf24c03d
commit 29e6cf01df
2 changed files with 4 additions and 28 deletions

View 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();

View 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();