From 59ecb9cf83313f82af857c7898dc075248d7668e Mon Sep 17 00:00:00 2001
From: Jarek Kobus <jkobus@trolltech.com>
Date: Tue, 5 Jan 2010 15:14:04 +0100
Subject: [PATCH] Changing the command's shortcut updates its internal actions.

If the command's shortcut is changed all context actions are updated
accordingly. When the new context action is added its shortcut is
automatically updated (taken from command's shortcut).

Reviewed-by: con
Task-number: QTCREATORBUG-471
---
 src/plugins/coreplugin/actionmanager/command.cpp | 12 ++++++++++++
 src/plugins/coreplugin/actionmanager/command_p.h |  1 +
 2 files changed, 13 insertions(+)

diff --git a/src/plugins/coreplugin/actionmanager/command.cpp b/src/plugins/coreplugin/actionmanager/command.cpp
index 6e84d29c554..b92720f4cd9 100644
--- a/src/plugins/coreplugin/actionmanager/command.cpp
+++ b/src/plugins/coreplugin/actionmanager/command.cpp
@@ -500,6 +500,7 @@ void OverrideableAction::addOverrideAction(QAction *action, const QList<int> &co
             m_contextActionMap.insert(k, action);
         }
     }
+    action->setShortcut(OverrideableAction::action()->shortcut());
 }
 
 void OverrideableAction::actionChanged()
@@ -529,3 +530,14 @@ bool OverrideableAction::isActive() const
 {
     return m_active;
 }
+
+void OverrideableAction::setKeySequence(const QKeySequence &key)
+{
+    QMap<int, QPointer<QAction> >::const_iterator it = m_contextActionMap.constBegin();
+    QMap<int, QPointer<QAction> >::const_iterator itEnd = m_contextActionMap.constEnd();
+    while (it != itEnd) {
+        it.value()->setShortcut(key);
+        ++it;
+    }
+    Action::setKeySequence(key);
+}
diff --git a/src/plugins/coreplugin/actionmanager/command_p.h b/src/plugins/coreplugin/actionmanager/command_p.h
index 176866dfeeb..accb15e4acb 100644
--- a/src/plugins/coreplugin/actionmanager/command_p.h
+++ b/src/plugins/coreplugin/actionmanager/command_p.h
@@ -143,6 +143,7 @@ public:
     bool setCurrentContext(const QList<int> &context);
     void addOverrideAction(QAction *action, const QList<int> &context);
     bool isActive() const;
+    void setKeySequence(const QKeySequence &key);
 
 private slots:
     void actionChanged();
-- 
GitLab