diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp
index bb0929e7c6f5bfc4e61fdde5effca81e691ae3d2..b3f6ffc70e6d92d55e89493f54e3c8eebc25264b 100644
--- a/src/plugins/designer/formeditorw.cpp
+++ b/src/plugins/designer/formeditorw.cpp
@@ -83,6 +83,20 @@
 static const char *editorWidgetStateKeyC = "editorWidgetState";
 static const char *settingsGroup = "Designer";
 
+#ifdef Q_OS_MAC
+    enum { osMac = 1 };
+#else
+    enum { osMac = 0 };
+#endif
+
+/* Actions of the designer plugin:
+ * Designer provides a toolbar which is subject to a context change (to
+ * "edit mode" context) when it is focussed.
+ * In order to prevent its actions from being disabled/hidden by that context
+ * change, the actions are registered on the global context. In currentEditorChanged(),
+ * the ones that are present in the global edit menu are set visible/invisible manually.
+ * The designer context is currently used for Cut/Copy/Paste, etc. */
+
 static inline QIcon designerIcon(const QString &iconName)
 {
     const QIcon icon = qdesigner_internal::createIconSet(iconName);
@@ -109,7 +123,6 @@ static inline QAction *createEditModeAction(QActionGroup *ag,
     Core::Command *command = am->registerAction(rc, name, context);
     if (!keySequence.isEmpty())
         command->setDefaultKeySequence(QKeySequence(keySequence));
-    command->setAttribute(Core::Command::CA_Hide);
     medit->addAction(command, Core::Constants::G_EDIT_OTHER);
     rc->setData(toolNumber);
     ag->addAction(rc);
@@ -331,101 +344,88 @@ void FormEditorW::setupActions()
     command->setAttribute(Core::Command::CA_Hide);
     medit->addAction(command, Core::Constants::G_EDIT_COPYPASTE);
 
-    //editor Modes. Store ids for editor tool bars
+    QList<int> globalcontext;
+    globalcontext << m_core->uniqueIDManager()->uniqueIdentifier(Core::Constants::C_GLOBAL);
+
     m_actionGroupEditMode = new QActionGroup(this);
     m_actionGroupEditMode->setExclusive(true);
     connect(m_actionGroupEditMode, SIGNAL(triggered(QAction*)), this, SLOT(activateEditMode(QAction*)));
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.WidgetEditor"));
-    createEditModeAction(m_actionGroupEditMode, m_context, am, medit,
+    createEditModeAction(m_actionGroupEditMode, globalcontext, am, medit,
                          QLatin1String("Edit widgets"), m_toolActionIds.back(),
                          EditModeWidgetEditor, QLatin1String("widgettool.png"), tr("F3"));
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.SignalsSlotsEditor"));
-    createEditModeAction(m_actionGroupEditMode,  m_context, am, medit,
+    createEditModeAction(m_actionGroupEditMode, globalcontext, am, medit,
                          QLatin1String("Edit signals/slots"), m_toolActionIds.back(),
                          EditModeSignalsSlotEditor, QLatin1String("signalslottool.png"), tr("F4"));
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.BuddyEditor"));
-    createEditModeAction(m_actionGroupEditMode,  m_context, am, medit,
+    createEditModeAction(m_actionGroupEditMode, globalcontext, am, medit,
                          QLatin1String("Edit buddies"), m_toolActionIds.back(),
                          EditModeBuddyEditor, QLatin1String("buddytool.png"));
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.TabOrderEditor"));
-    createEditModeAction(m_actionGroupEditMode,  m_context, am, medit,
+    createEditModeAction(m_actionGroupEditMode, globalcontext, am, medit,
                          QLatin1String("Edit tab order"),  m_toolActionIds.back(),
                          EditModeTabOrderEditor, QLatin1String("tabordertool.png"));
 
     //tool actions
     m_toolActionIds.push_back(QLatin1String("FormEditor.LayoutHorizontally"));
-#ifndef Q_OS_MAC
-    addToolAction(m_fwm->actionHorizontalLayout(), am, m_context,
-                  m_toolActionIds.back(), mformtools, tr("Ctrl+H"));
-#else
-    addToolAction(m_fwm->actionHorizontalLayout(), am, m_context,
-                  m_toolActionIds.back(), mformtools, tr("Meta+H"));
-#endif
+    const QString horizLayoutShortcut = osMac ? tr("Meta+H") : tr("Ctrl+H");
+    addToolAction(m_fwm->actionHorizontalLayout(), am, globalcontext,
+                  m_toolActionIds.back(), mformtools, horizLayoutShortcut);
+
     m_toolActionIds.push_back(QLatin1String("FormEditor.LayoutVertically"));
-#ifndef Q_OS_MAC
-    addToolAction(m_fwm->actionVerticalLayout(), am, m_context,
-                  m_toolActionIds.back(),  mformtools, tr("Ctrl+L"));
-#else
-    addToolAction(m_fwm->actionVerticalLayout(), am, m_context,
-                  m_toolActionIds.back(),  mformtools, tr("Meta+L"));
-#endif
+    const QString vertLayoutShortcut = osMac ? tr("Meta+L") : tr("Ctrl+L");
+    addToolAction(m_fwm->actionVerticalLayout(), am, globalcontext,
+                  m_toolActionIds.back(),  mformtools, vertLayoutShortcut);
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.SplitHorizontal"));
-    addToolAction(m_fwm->actionSplitHorizontal(), am, m_context,
+    addToolAction(m_fwm->actionSplitHorizontal(), am, globalcontext,
                   m_toolActionIds.back(), mformtools);
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.SplitVertical"));
-    addToolAction(m_fwm->actionSplitVertical(), am, m_context,
+    addToolAction(m_fwm->actionSplitVertical(), am, globalcontext,
                   m_toolActionIds.back(), mformtools);
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.LayoutForm"));
-    addToolAction(m_fwm->actionFormLayout(), am, m_context,
+    addToolAction(m_fwm->actionFormLayout(), am, globalcontext,
                   m_toolActionIds.back(),  mformtools);
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.LayoutGrid"));
-#ifndef Q_OS_MAC
-    addToolAction(m_fwm->actionGridLayout(), am, m_context,
-                  m_toolActionIds.back(),  mformtools, tr("Ctrl+G"));
-#else
-    addToolAction(m_fwm->actionGridLayout(), am, m_context,
-                  m_toolActionIds.back(),  mformtools, tr("Meta+G"));
-#endif
+    const QString gridShortcut = osMac ? tr("Meta+G") : tr("Ctrl+G");
+    addToolAction(m_fwm->actionGridLayout(), am, globalcontext,
+                  m_toolActionIds.back(),  mformtools, gridShortcut);
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.LayoutBreak"));
-    addToolAction(m_fwm->actionBreakLayout(), am, m_context,
+    addToolAction(m_fwm->actionBreakLayout(), am, globalcontext,
                   m_toolActionIds.back(), mformtools);
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.LayoutAdjustSize"));
-#ifndef Q_OS_MAC
-    addToolAction(m_fwm->actionAdjustSize(), am, m_context,
-                  m_toolActionIds.back(),  mformtools, tr("Ctrl+J"));
-#else
-    addToolAction(m_fwm->actionAdjustSize(), am, m_context,
-                  m_toolActionIds.back(),  mformtools, tr("Meta+J"));
-#endif
+    const QString adjustShortcut = osMac ? tr("Meta+J") : tr("Ctrl+J");
+    addToolAction(m_fwm->actionAdjustSize(), am, globalcontext,
+                  m_toolActionIds.back(),  mformtools, adjustShortcut);
 
     m_toolActionIds.push_back(QLatin1String("FormEditor.SimplifyLayout"));
-    addToolAction(m_fwm->actionSimplifyLayout(), am, m_context,
+    addToolAction(m_fwm->actionSimplifyLayout(), am, globalcontext,
                   m_toolActionIds.back(),  mformtools);
 
     createSeparator(this, am, m_context, mformtools, QLatin1String("FormEditor.Menu.Tools.Separator1"));
 
-    addToolAction(m_fwm->actionLower(), am, m_context,
+    addToolAction(m_fwm->actionLower(), am, globalcontext,
                   QLatin1String("FormEditor.Lower"), mformtools);
 
-    addToolAction(m_fwm->actionRaise(), am, m_context,
+    addToolAction(m_fwm->actionRaise(), am, globalcontext,
                   QLatin1String("FormEditor.Raise"), mformtools);
 
     // Commands that do not go into the editor toolbar
-    createSeparator(this, am, m_context, mformtools, QLatin1String("FormEditor.Menu.Tools.Separator2"));
+    createSeparator(this, am, globalcontext, mformtools, QLatin1String("FormEditor.Menu.Tools.Separator2"));
 
     m_actionPreview = m_fwm->actionDefaultPreview();
     QTC_ASSERT(m_actionPreview, return);
-    addToolAction(m_actionPreview,  am,  m_context,
+    addToolAction(m_actionPreview,  am,  globalcontext,
                    QLatin1String("FormEditor.Preview"), mformtools, tr("Ctrl+Alt+R"));
 
     // Preview in style...
@@ -435,11 +435,10 @@ void FormEditorW::setupActions()
     // Form settings
     createSeparator(this, am, m_context,  medit, QLatin1String("FormEditor.Edit.Separator2"), Core::Constants::G_EDIT_OTHER);
 
-#if QT_VERSION >= 0x040500
-    createSeparator(this, am, m_context, mformtools, QLatin1String("FormEditor.Menu.Tools.Separator3"));
+    createSeparator(this, am, globalcontext, mformtools, QLatin1String("FormEditor.Menu.Tools.Separator3"));
     QAction *actionFormSettings = m_fwm->actionShowFormWindowSettingsDialog();
-    addToolAction(actionFormSettings, am, m_context, QLatin1String("FormEditor.FormSettings"), mformtools);
-#endif
+    addToolAction(actionFormSettings, am, globalcontext, QLatin1String("FormEditor.FormSettings"), mformtools);
+
     // FWM
     connect(m_fwm, SIGNAL(activeFormWindowChanged(QDesignerFormWindowInterface *)), this, SLOT(activeFormWindowChanged(QDesignerFormWindowInterface *)));
 }
@@ -566,7 +565,9 @@ void FormEditorW::currentEditorChanged(Core::IEditor *editor)
         QTC_ASSERT(fw, return);
         fw->activate();
         m_fwm->setActiveFormWindow(fw->formWindow());
+        m_actionGroupEditMode->setVisible(true);
     } else {
+        m_actionGroupEditMode->setVisible(false);
         m_fwm->setActiveFormWindow(0);
     }
 }