diff --git a/src/plugins/coreplugin/actionmanager/command.cpp b/src/plugins/coreplugin/actionmanager/command.cpp
index 6e84d29c554dfdf4cacb8f8617cd57f3b3e92629..b92720f4cd9fc57438b67159ad820d6241962b4a 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 176866dfeeb7a3ffc48621f5c8188a591e661922..accb15e4acb3cceb30a30493fe17e9b1140b0531 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();