diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/coreplugin/actionmanager/actionmanager.cpp | 19 | ||||
-rw-r--r-- | src/plugins/coreplugin/actionmanager/actionmanager.h | 1 | ||||
-rw-r--r-- | src/plugins/coreplugin/actionmanager/actionmanager_p.h | 1 |
3 files changed, 20 insertions, 1 deletions
diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp index 0d7921ac4fd..c6ca7fb77eb 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp +++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp @@ -377,7 +377,7 @@ void ActionManagerPrivate::unregisterAction(QAction *action, const Id &id) QTC_ASSERT(c, return); a = qobject_cast<Action *>(c); if (!a) { - qWarning() << "registerAction: id" << id << "is registered with a different command type."; + qWarning() << "unregisterAction: id" << id << "is registered with a different command type."; return; } a->removeOverrideAction(action); @@ -517,3 +517,20 @@ void ActionManagerPrivate::saveSettings(QSettings *settings) settings->endArray(); } + +void ActionManagerPrivate::unregisterShortcut(const Core::Id &id) +{ + Shortcut *sc = 0; + const int uid = UniqueIDManager::instance()->uniqueIdentifier(id); + CommandPrivate *c = m_idCmdMap.value(uid, 0); + QTC_ASSERT(c, return); + sc = qobject_cast<Shortcut *>(c); + if (!sc) { + qWarning() << "unregisterShortcut: id" << id << "is registered with a different command type."; + return; + } + delete sc->shortcut(); + m_idCmdMap.remove(uid); + delete sc; + emit commandListChanged(); +} diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.h b/src/plugins/coreplugin/actionmanager/actionmanager.h index 0306ba63b24..a8acfb9f4f4 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager.h +++ b/src/plugins/coreplugin/actionmanager/actionmanager.h @@ -71,6 +71,7 @@ public: virtual QList<Command *> commands() const = 0; virtual void unregisterAction(QAction *action, const Id &id) = 0; + virtual void unregisterShortcut(const Id &id) = 0; signals: void commandListChanged(); diff --git a/src/plugins/coreplugin/actionmanager/actionmanager_p.h b/src/plugins/coreplugin/actionmanager/actionmanager_p.h index 4b953a5a9b2..f3e94abb426 100644 --- a/src/plugins/coreplugin/actionmanager/actionmanager_p.h +++ b/src/plugins/coreplugin/actionmanager/actionmanager_p.h @@ -91,6 +91,7 @@ public: Core::Command *command(const Id &id) const; Core::ActionContainer *actionContainer(const Id &id) const; void unregisterAction(QAction *action, const Id &id); + void unregisterShortcut(const Id &id); private: bool hasContext(const Context &context) const; |