From e9e47ab452eb1c2f38e1e6e0ffc141734f120324 Mon Sep 17 00:00:00 2001 From: hjk <hjk@theqtcompany.com> Date: Tue, 17 May 2016 15:01:46 +0200 Subject: [PATCH] Debugger: Allow re-evaluation of certain expressions without stepping There are cases like changing an Evaluated Expression that make re-evaluation necessary. Change-Id: I51fe46b67399a59aebbdeb9c3e778795b1c52cf1 Reviewed-by: Christian Stenger <christian.stenger@qt.io> --- src/plugins/debugger/debuggerengine.cpp | 9 +++++++++ src/plugins/debugger/debuggerengine.h | 1 + src/plugins/debugger/watchhandler.cpp | 2 +- 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 5c13d880171..57580df85cb 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -2043,6 +2043,15 @@ void DebuggerEngine::updateItem(const QByteArray &iname) doUpdateLocals(params); } +void DebuggerEngine::updateWatchData(const QByteArray &iname) +{ + // This is used in cases where re-evaluation is ok for the same iname + // e.g. when changing the expression in a watcher. + UpdateParameters params; + params.partialVariable = iname; + doUpdateLocals(params); +} + void DebuggerEngine::expandItem(const QByteArray &iname) { updateItem(iname); diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 4d82620f6eb..86f7a567212 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -197,6 +197,7 @@ public: virtual bool canHandleToolTip(const DebuggerToolTipContext &) const; virtual void expandItem(const QByteArray &iname); // Called when item in tree gets expanded. virtual void updateItem(const QByteArray &iname); // Called for fresh watch items. + void updateWatchData(const QByteArray &iname); // FIXME: Merge with above. virtual void selectWatchData(const QByteArray &iname); virtual void startDebugger(DebuggerRunControl *runControl); diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 18786f2cf0b..bcbeffbaaa8 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1445,7 +1445,7 @@ void WatchHandler::watchExpression(const QString &exp0, const QString &name) item->setValue(QString(QLatin1Char(' '))); item->update(); } else { - m_model->m_engine->updateItem(item->iname); + m_model->m_engine->updateWatchData(item->iname); } updateWatchersWindow(); } -- GitLab