diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp index c6bf0494bd1c7d514bb8979e706324b3219b9c10..f9878aa29427a7d9280969db94e86a858c397704 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 530eca53e4e36af8a2136aff1b837421b90ed37c..914d5f90448cd48b86aeaef8289c0157e74a6643 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()