diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 9cbf5d3c643165271f0b57386d4f0d2ef3baa8fb..3d296ee9d4dd399f98ebc68066b00518011242e1 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -484,7 +484,8 @@ DebuggerPlugin::DebuggerPlugin() m_cmdLineEnabledEngines(AllEngineTypes), m_cmdLineAttachPid(0), m_cmdLineWinCrashEvent(0), - m_toggleLockedAction(0) + m_toggleLockedAction(0), + m_peStartDebuggingAction(0) {} DebuggerPlugin::~DebuggerPlugin() @@ -669,6 +670,10 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess Core::ActionContainer *mstart = am->actionContainer(ProjectExplorer::Constants::M_DEBUG_STARTDEBUGGING); + // Register an action "Continue" under a different context (Gdb Running) + // in the action manager under the "Start Debugging" action's id. + // Activating this context will then cause the "Start Debugging" action + // to switch to "Continue". Core::Command *cmd = 0; const DebuggerManagerActions actions = m_manager->debuggerManagerActions(); cmd = am->registerAction(actions.continueAction, @@ -804,6 +809,14 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *errorMess connect(resetToSimpleAction, SIGNAL(triggered()), m_manager, SLOT(setSimpleDockWidgetArrangement())); + // Retrieve "Start debugging" action from Project explorer. + if (const Core::Command *dcmd = am->command(QLatin1String(ProjectExplorer::Constants::DEBUG))) { + m_peStartDebuggingAction = dcmd->action(); + } else { + *errorMessage = QLatin1String("Internal error: Cannot access external actions"); + return false; + } + // FIXME: addAutoReleasedObject(new CommonOptionsPage); addAutoReleasedObject(new DebuggingHelperOptionPage); @@ -1157,6 +1170,7 @@ void DebuggerPlugin::handleStateChanged(int state) } else { core->removeAdditionalContext(m_gdbRunningContext); core->updateContext(); + m_peStartDebuggingAction->setEnabled(state == DebuggerNotReady); } const bool started = state == InferiorRunning diff --git a/src/plugins/debugger/debuggerplugin.h b/src/plugins/debugger/debuggerplugin.h index 1e1af9cb8f7419e094e1451360876bd8f35d5bef..449c2affc8abeb5d6257f357c40bfc2d2c12033b 100644 --- a/src/plugins/debugger/debuggerplugin.h +++ b/src/plugins/debugger/debuggerplugin.h @@ -143,6 +143,7 @@ private: QAction *m_attachExternalAction; QAction *m_attachCoreAction; QAction *m_detachAction; + QAction *m_peStartDebuggingAction; }; } // namespace Internal