diff options
author | Nicolas Arnaud-Cormos <[email protected]> | 2011-01-24 11:39:40 +0100 |
---|---|---|
committer | Tobias Hunger <[email protected]> | 2011-01-24 11:39:40 +0100 |
commit | f3d7bbff0c2abcd8dd1efc8d3578cf3b865292a8 (patch) | |
tree | b63ec7715fa454538a5d768cd5d1a5a8ee7c3fd8 /src | |
parent | c41d9412aaf860c48895ead1c9e680861e1399fc (diff) |
Add removeShortcut method to the actionManager.
Almost working as the removeAction, but we don't need to check if the command is empty here.
Merge-request: 236
Reviewed-by: Tobias Hunger <[email protected]>
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; |