From c069cd588af0cdc335ec2ed909281a0bf9da666b Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@nokia.com> Date: Mon, 2 Nov 2009 12:47:47 +0100 Subject: [PATCH] Debugger: Disable "Start debugging" when attaching/starting remote Directly enable project explorer actions. Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com> --- src/plugins/debugger/debuggerplugin.cpp | 16 +++++++++++++++- src/plugins/debugger/debuggerplugin.h | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 9cbf5d3c643..3d296ee9d4d 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 1e1af9cb8f7..449c2affc8a 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 -- GitLab