plasma: make Plasma::Applet::setGlobalShortcut() set the shortcut once only

the shortcut is managed internally by Plasma::Applet

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2024-04-26 01:08:31 +03:00
parent 1faf138d4b
commit e47359782c

View file

@ -1428,24 +1428,20 @@ void Applet::setGlobalShortcut(const QKeySequence &shortcut)
d->activationAction = new KAction(this); d->activationAction = new KAction(this);
d->activationAction->setText(i18n("Activate %1 Widget", name())); d->activationAction->setText(i18n("Activate %1 Widget", name()));
d->activationAction->setObjectName(QString("activate widget %1").arg(id())); // NO I18N d->activationAction->setObjectName(QString("activate widget %1").arg(id())); // NO I18N
connect(d->activationAction, SIGNAL(triggered()), this, SIGNAL(activate())); d->activationAction->setGlobalShortcut(shortcut, KAction::ActiveShortcut | KAction::DefaultShortcut);
connect(d->activationAction, SIGNAL(globalShortcutChanged(QKeySequence)), connect(
this, SLOT(globalShortcutChanged())); d->activationAction, SIGNAL(triggered()),
this, SIGNAL(activate())
);
connect(
d->activationAction, SIGNAL(globalShortcutChanged(QKeySequence)),
this, SLOT(globalShortcutChanged()));
QList<QWidget *> widgets = d->actions->associatedWidgets(); QList<QWidget *> widgets = d->actions->associatedWidgets();
foreach (QWidget *w, widgets) { foreach (QWidget *w, widgets) {
w->addAction(d->activationAction); w->addAction(d->activationAction);
} }
} else if (d->activationAction->globalShortcut() == shortcut) {
return;
} }
//kDebug() << "before" << shortcut << d->activationAction->globalShortcut();
d->activationAction->setGlobalShortcut(
shortcut,
KAction::ShortcutTypes(KAction::ActiveShortcut | KAction::DefaultShortcut)
);
d->globalShortcutChanged();
} }
void AppletPrivate::globalShortcutChanged() void AppletPrivate::globalShortcutChanged()
@ -1457,7 +1453,7 @@ void AppletPrivate::globalShortcutChanged()
KConfigGroup shortcutConfig(mainConfigGroup(), "Shortcuts"); KConfigGroup shortcutConfig(mainConfigGroup(), "Shortcuts");
shortcutConfig.writeEntry("global", activationAction->globalShortcut().toString()); shortcutConfig.writeEntry("global", activationAction->globalShortcut().toString());
scheduleModificationNotification(); scheduleModificationNotification();
//kDebug() << "after" << shortcut.primary() << d->activationAction->globalShortcut().primary(); //kDebug() << "after" << shortcut << d->activationAction->globalShortcut();
} }
QKeySequence Applet::globalShortcut() const QKeySequence Applet::globalShortcut() const
@ -1465,7 +1461,6 @@ QKeySequence Applet::globalShortcut() const
if (d->activationAction) { if (d->activationAction) {
return d->activationAction->globalShortcut(); return d->activationAction->globalShortcut();
} }
return QKeySequence(); return QKeySequence();
} }
@ -1823,9 +1818,12 @@ void AppletPrivate::addGlobalShortcutsPage(KConfigDialog *dialog)
void AppletPrivate::configDialogFinished() void AppletPrivate::configDialogFinished()
{ {
if (shortcutEditor) { if (shortcutEditor) {
QKeySequence sequence = shortcutEditor.data()->keySequence(); QKeySequence shortcut = shortcutEditor.data()->keySequence();
if (sequence != q->globalShortcut()) { if (shortcut != q->globalShortcut()) {
q->setGlobalShortcut(sequence); // kDebug() << "before" << shortcut << q->globalShortcut();
if (activationAction) {
activationAction->setGlobalShortcut(shortcut, KAction::ActiveShortcut);
}
emit q->configNeedsSaving(); emit q->configNeedsSaving();
} }
} }
@ -2317,11 +2315,6 @@ AppletPrivate::AppletPrivate(KService::Ptr service, const KPluginInfo *info, int
AppletPrivate::~AppletPrivate() AppletPrivate::~AppletPrivate()
{ {
if (activationAction && activationAction->isGlobalShortcutEnabled()) {
//kDebug() << "reseting global action for" << q->name() << activationAction->objectName();
activationAction->forgetGlobalShortcut();
}
delete extender.data(); delete extender.data();
delete mainConfig; delete mainConfig;