From ea6ff5913a4286f2a7033cf733c0b6c20b729c7e Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Tue, 1 Jun 2010 13:12:03 +0200
Subject: [PATCH] debugger: switch off reverse debugging tool button if not
 useful

---
 src/plugins/debugger/debuggermanager.cpp | 8 ++++++--
 src/plugins/debugger/debuggerplugin.cpp  | 4 ++--
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index c6bf0494bd1..f9878aa2942 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -1113,8 +1113,11 @@ void DebuggerManager::startNewDebugger(const DebuggerStartParametersPtr &sp)
     const unsigned engineCapabilities = d->m_engine->debuggerCapabilities();
     theDebuggerAction(OperateByInstruction)
         ->setEnabled(engineCapabilities & DisassemblerCapability);
-    d->m_actions.reverseDirectionAction
-        ->setEnabled(engineCapabilities & ReverseSteppingCapability);
+
+    const bool canReverse = (engineCapabilities & ReverseSteppingCapability)
+                && theDebuggerBoolSetting(EnableReverseDebugging);
+    d->m_actions.reverseDirectionAction->setChecked(false);
+    d->m_actions.reverseDirectionAction->setEnabled(canReverse);
 }
 
 void DebuggerManager::startFailed()
@@ -1136,6 +1139,7 @@ void DebuggerManager::cleanupViews()
     d->m_sourceFilesWindow->removeAll();
     d->m_disassemblerViewAgent.cleanup();
     d->m_actions.reverseDirectionAction->setChecked(false);
+    d->m_actions.reverseDirectionAction->setEnabled(false);
 
     // FIXME: Move to plugin?
     using namespace Core;
diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp
index 530eca53e4e..914d5f90448 100644
--- a/src/plugins/debugger/debuggerplugin.cpp
+++ b/src/plugins/debugger/debuggerplugin.cpp
@@ -1506,8 +1506,8 @@ void DebuggerPlugin::enableReverseDebuggingTriggered(const QVariant &value)
 {
     QTC_ASSERT(m_reverseToolButton, return);
     m_reverseToolButton->setVisible(value.toBool());
-    if (!value.toBool())
-        m_manager->debuggerManagerActions().reverseDirectionAction->setChecked(false);
+    m_manager->debuggerManagerActions().reverseDirectionAction->setChecked(false);
+    m_manager->debuggerManagerActions().reverseDirectionAction->setEnabled(value.toBool());
 }
 
 void DebuggerPlugin::toggleBreakpoint()
-- 
GitLab