Commit 924bdf5e authored by David Redondo's avatar David Redondo 🏎 Committed by Nate Graham
Browse files

krunerglobalshortcuts: Fix migration from old component

When calling cleanUpComponent KGlobalAccel checks if there are no
shortcuts active, otherwise it will refuse to clean the component.
For a desktop file component (aka KServiceActionComponent) all
shortcuts are deactivated inside cleanUpComponent. For a regular
Component we have to do this manually.


(cherry picked from commit e275ae2c)
parent 2216f839
......@@ -58,16 +58,24 @@ int main(int argc, char **argv)
QList<QKeySequence> oldRunCommand;
QList<QKeySequence> oldRunClipboard;
if (KGlobalAccel::isComponentActive(oldCompomentName)) {
oldRunCommand = KGlobalAccel::self()->globalShortcut(oldCompomentName, QStringLiteral("run command"));
oldRunClipboard = KGlobalAccel::self()->globalShortcut(oldCompomentName, QStringLiteral("run command on clipboard contents"));
KGlobalAccel::self()->cleanComponent(oldCompomentName);
} else if (KGlobalAccel::isComponentActive(oldDesktopFile)) {
// It can happen that the old component is not active so we do it unconditionally
KActionCollection oldActions(nullptr, oldCompomentName);
QAction oldRunCommandAction, oldRunClipboardAction;
oldActions.addAction(QStringLiteral("run command"), &oldRunCommandAction);
oldActions.addAction(QStringLiteral("run command on clipboard contents"), &oldRunClipboardAction);
oldRunCommand = KGlobalAccel::self()->globalShortcut(oldCompomentName, oldRunCommandAction.objectName());
oldRunClipboard = KGlobalAccel::self()->globalShortcut(oldCompomentName, oldRunClipboardAction.objectName());
KGlobalAccel::self()->setShortcut(&oldRunCommandAction, {});
KGlobalAccel::self()->setShortcut(&oldRunClipboardAction, {});
KGlobalAccel::self()->removeAllShortcuts(&oldRunCommandAction);
KGlobalAccel::self()->removeAllShortcuts(&oldRunClipboardAction);
KGlobalAccel::self()->cleanComponent(oldCompomentName);
if (KGlobalAccel::isComponentActive(oldDesktopFile)) {
oldRunCommand = KGlobalAccel::self()->globalShortcut(oldDesktopFile, runCommandAction->objectName());
oldRunClipboard = KGlobalAccel::self()->globalShortcut(oldDesktopFile, runClipboardAction->objectName());
KGlobalAccel::self()->cleanComponent(oldDesktopFile);
} else {
return 0;
}
shortCutActions.takeAction(runCommandAction);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment