diff options
author | hjk <hjk@qt.io> | 2018-11-09 11:36:28 +0100 |
---|---|---|
committer | hjk <hjk@qt.io> | 2018-11-14 13:08:54 +0000 |
commit | 18e73a738be659bbc33306d800324a89c34b8f17 (patch) | |
tree | e7cdd5151b6b1c7086cb1f87dd07433b0b436a68 | |
parent | deef478b3823da3c832a66a15c5d19fce377f6bd (diff) | |
download | qt-creator-18e73a738be659bbc33306d800324a89c34b8f17.tar.gz |
Debugger: Fix display of location marker when switching perspectives
Fixes: QTCREATORBUG-21362
Change-Id: I9bc1f0931ea902d04ab256774347b63c1fc64262
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
-rw-r--r-- | src/plugins/debugger/debuggerengine.cpp | 19 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerengine.h | 1 | ||||
-rw-r--r-- | src/plugins/debugger/enginemanager.cpp | 14 | ||||
-rw-r--r-- | src/plugins/debugger/enginemanager.h | 4 |
4 files changed, 20 insertions, 18 deletions
diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index a0e97ec8c9..75bd17ea8e 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1070,9 +1070,11 @@ void DebuggerEngine::gotoLocation(const Location &loc) void DebuggerEngine::gotoCurrentLocation() { - int top = stackHandler()->currentIndex(); - if (top >= 0) - gotoLocation(stackHandler()->currentFrame()); + if (d->m_state == InferiorStopOk || d->m_state == InferiorUnrunnable) { + int top = stackHandler()->currentIndex(); + if (top >= 0) + gotoLocation(stackHandler()->currentFrame()); + } } const DebuggerRunParameters &DebuggerEngine::runParameters() const @@ -1110,6 +1112,17 @@ void DebuggerEngine::abortDebugger() } } +void DebuggerEngine::updateUi(bool isCurrentEngine) +{ + updateState(false); + if (isCurrentEngine) { + gotoCurrentLocation(); + } else { + d->m_locationMark.reset(); + d->m_disassemblerAgent.resetLocation(); + } +} + static bool isAllowedTransition(DebuggerState from, DebuggerState to) { switch (from) { diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index fad3212bf6..12e4356ce0 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -366,6 +366,7 @@ public: void gotoCurrentLocation(); virtual void quitDebugger(); // called when pressing the stop button void abortDebugger(); + void updateUi(bool isCurrentEngine); bool isPrimaryEngine() const; diff --git a/src/plugins/debugger/enginemanager.cpp b/src/plugins/debugger/enginemanager.cpp index 9a14ffaa29..68f800c5b1 100644 --- a/src/plugins/debugger/enginemanager.cpp +++ b/src/plugins/debugger/enginemanager.cpp @@ -337,7 +337,6 @@ void EngineManagerPrivate::activateEngineItem(EngineItem *engineItem) if (DebuggerEngine *engine = m_currentItem->m_engine) { newContext.add(engine->languageContext()); newContext.add(engine->debuggerContext()); - engine->gotoCurrentLocation(); } else { newContext.add(Context(Constants::C_DEBUGGER_NOTRUNNING)); } @@ -355,10 +354,8 @@ void EngineManagerPrivate::selectUiForCurrentEngine() Perspective *perspective = nullptr; int row = 0; - if (m_currentItem && m_currentItem->m_engine) { + if (m_currentItem && m_currentItem->m_engine) perspective = m_currentItem->m_engine->perspective(); - m_currentItem->m_engine->updateState(false); - } if (m_currentItem) row = m_engineModel.rootItem()->indexOf(m_currentItem); @@ -378,19 +375,14 @@ void EngineManagerPrivate::selectUiForCurrentEngine() QTC_ASSERT(perspective, return); perspective->select(); - m_engineModel.rootItem()->forFirstLevelChildren([](EngineItem *engineItem) { + m_engineModel.rootItem()->forFirstLevelChildren([this](EngineItem *engineItem) { if (engineItem && engineItem->m_engine) - engineItem->m_engine->updateMarkers(); + engineItem->m_engine->updateUi(engineItem == m_currentItem); }); emit theEngineManager->currentEngineChanged(); } -void EngineManager::selectUiForCurrentEngine() -{ - d->selectUiForCurrentEngine(); -} - EngineItem *EngineManagerPrivate::findEngineItem(DebuggerEngine *engine) { return m_engineModel.rootItem()->findFirstLevelChild([engine](EngineItem *engineItem) { diff --git a/src/plugins/debugger/enginemanager.h b/src/plugins/debugger/enginemanager.h index 1107a7f100..a41f13183a 100644 --- a/src/plugins/debugger/enginemanager.h +++ b/src/plugins/debugger/enginemanager.h @@ -27,8 +27,6 @@ #include <utils/treemodel.h> -#include <QAbstractTableModel> -#include <QComboBox> #include <QPointer> namespace Debugger { @@ -56,8 +54,6 @@ public: static QList<QPointer<DebuggerEngine> > engines(); static QPointer<DebuggerEngine> currentEngine(); - static void selectUiForCurrentEngine(); - static QWidget *engineChooser(); signals: |