From f3d7bbff0c2abcd8dd1efc8d3578cf3b865292a8 Mon Sep 17 00:00:00 2001 From: Nicolas Arnaud-Cormos Date: Mon, 24 Jan 2011 11:39:40 +0100 Subject: 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 --- .../coreplugin/actionmanager/actionmanager.cpp | 19 ++++++++++++++++++- src/plugins/coreplugin/actionmanager/actionmanager.h | 1 + .../coreplugin/actionmanager/actionmanager_p.h | 1 + 3 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/plugins') 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(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(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 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; -- cgit v1.2.3