From bd2d160a9506c41cb861e560c4f8e648aefcad4c Mon Sep 17 00:00:00 2001 From: hjk <qtc-committer@nokia.com> Date: Wed, 15 Sep 2010 19:02:12 +0200 Subject: [PATCH] debugger: suppress variable tooltips with outdated contents --- src/plugins/debugger/debuggerengine.cpp | 18 +++++++++++++++++- src/plugins/debugger/debuggerengine.h | 1 + src/plugins/debugger/debuggertooltip.cpp | 1 - src/plugins/debugger/gdb/gdbengine.cpp | 10 +++++++--- src/plugins/debugger/gdb/gdbengine.h | 5 +++-- src/plugins/debugger/stackhandler.cpp | 7 ++----- src/plugins/debugger/watchhandler.cpp | 6 ++++++ src/plugins/debugger/watchhandler.h | 1 + 8 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index e85885c9a61..bff0904e7f1 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -35,6 +35,7 @@ #include "debuggeroutputwindow.h" #include "debuggerplugin.h" #include "debuggerstringutils.h" +#include "debuggertooltip.h" #include "breakhandler.h" #include "moduleshandler.h" @@ -421,11 +422,26 @@ void DebuggerEngine::showStatusMessage(const QString &msg, int timeout) const showMessage(msg, StatusBar, timeout); } +void DebuggerEngine::removeTooltip() +{ + watchHandler()->removeTooltip(); + hideDebuggerToolTip(); +} + void DebuggerEngine::handleCommand(int role, const QVariant &value) { - //qDebug() << "COMMAND: " << role << value; + if (role != RequestToolTipByExpressionRole) + removeTooltip(); switch (role) { + case RequestActivateFrameRole: + activateFrame(value.toInt()); + break; + + case RequestReloadFullStackRole: + reloadFullStack(); + break; + case RequestReloadSourceFilesRole: reloadSourceFiles(); break; diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 8b4b21eed35..6f2df32ee19 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -185,6 +185,7 @@ public: virtual void selectThread(int index); virtual void assignValueInDebugger(const QString &expr, const QString &value); + virtual void removeTooltip(); // Convenience static QMessageBox *showMessageBox diff --git a/src/plugins/debugger/debuggertooltip.cpp b/src/plugins/debugger/debuggertooltip.cpp index 96452a4ba40..da7511fbefd 100644 --- a/src/plugins/debugger/debuggertooltip.cpp +++ b/src/plugins/debugger/debuggertooltip.cpp @@ -151,7 +151,6 @@ void ToolTipWidget::run(const QPoint &point, QAbstractItemModel *model, { move(point); setModel(model); - setRootIndex(index.parent()); computeSize(); setRootIsDecorated(model->hasChildren(index)); // FIXME: use something more sensible diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index f0bab9d679a..179802a3cab 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3189,9 +3189,6 @@ bool GdbEngine::supportsThreads() const // ////////////////////////////////////////////////////////////////////// -QString GdbEngine::m_toolTipExpression; -QPoint GdbEngine::m_toolTipPos; - bool GdbEngine::showToolTip() { QByteArray iname = tooltipIName(m_toolTipExpression); @@ -4394,6 +4391,13 @@ void GdbEngine::resetCommandQueue() } } +void GdbEngine::removeTooltip() +{ + m_toolTipExpression.clear(); + m_toolTipPos = QPoint(); + DebuggerEngine::removeTooltip(); +} + // // Factory // diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 24ffdc63294..3e0f77e87db 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -532,9 +532,10 @@ private: ////////// View & Data Stuff ////////// AbstractGdbProcess *gdbProc() const; void showExecutionError(const QString &message); - static QString m_toolTipExpression; - static QPoint m_toolTipPos; + void removeTooltip(); static QByteArray tooltipIName(const QString &exp); + QString m_toolTipExpression; + QPoint m_toolTipPos; // HACK: StackFrame m_targetFrame; diff --git a/src/plugins/debugger/stackhandler.cpp b/src/plugins/debugger/stackhandler.cpp index dbf9deee52e..d7e995f0831 100644 --- a/src/plugins/debugger/stackhandler.cpp +++ b/src/plugins/debugger/stackhandler.cpp @@ -140,8 +140,9 @@ QVariant StackHandler::data(const QModelIndex &index, int role) const bool StackHandler::setData(const QModelIndex &index, const QVariant &value, int role) { switch (role) { + case RequestReloadFullStackRole: case RequestActivateFrameRole: - m_engine->activateFrame(value.toInt()); + m_engine->handleCommand(role, value); return true; case RequestShowMemoryRole: @@ -154,10 +155,6 @@ bool StackHandler::setData(const QModelIndex &index, const QVariant &value, int return true; } - case RequestReloadFullStackRole: - m_engine->reloadFullStack(); - return true; - default: return QAbstractTableModel::setData(index, value, role); } diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 7d55dc7f413..2871f2135ab 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1661,5 +1661,11 @@ void WatchHandler::showInEditorHelper(QString *contents, WatchItem *item, int de showInEditorHelper(contents, child, depth + 1); } +void WatchHandler::removeTooltip() +{ + m_tooltips->reinitialize(); + m_tooltips->emitAllChanged(); +} + } // namespace Internal } // namespace Debugger diff --git a/src/plugins/debugger/watchhandler.h b/src/plugins/debugger/watchhandler.h index 42380f8fac3..0c8f0f15eb4 100644 --- a/src/plugins/debugger/watchhandler.h +++ b/src/plugins/debugger/watchhandler.h @@ -156,6 +156,7 @@ public: void loadSessionData(); void saveSessionData(); + void removeTooltip(); void initializeFromTemplate(WatchHandler *other); void storeToTemplate(WatchHandler *other); -- GitLab