aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorNicolas Arnaud-Cormos <[email protected]>2011-01-24 11:39:40 +0100
committerTobias Hunger <[email protected]>2011-01-24 11:39:40 +0100
commitf3d7bbff0c2abcd8dd1efc8d3578cf3b865292a8 (patch)
treeb63ec7715fa454538a5d768cd5d1a5a8ee7c3fd8 /src
parentc41d9412aaf860c48895ead1c9e680861e1399fc (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.cpp19
-rw-r--r--src/plugins/coreplugin/actionmanager/actionmanager.h1
-rw-r--r--src/plugins/coreplugin/actionmanager/actionmanager_p.h1
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;