From a59f45c5769d82e0bcd9de2bae39b180da494fd4 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Wed, 7 Jul 2010 16:30:42 +0200
Subject: [PATCH] debugger: try to improve tooltip handling

Still far from usable.
---
 src/plugins/debugger/gdb/gdbengine.cpp       | 12 +++++++-----
 src/plugins/debugger/gdb/gdbengine.h         |  2 +-
 src/plugins/debugger/gdb/pythongdbengine.cpp |  7 +++++--
 3 files changed, 13 insertions(+), 8 deletions(-)

diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 67b478b6065..56d900ed021 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -114,9 +114,9 @@ static const char winPythonVersionC[] = "python2.5";
 
 #define CB(callback) &GdbEngine::callback, STRINGIFY(callback)
 
-QByteArray GdbEngine::tooltipIName()
+QByteArray GdbEngine::tooltipIName(const QString &exp)
 {
-    return "tooltip.x";
+    return "tooltip." + exp.toLatin1().toHex();
 }
 
 static bool stateAcceptsGdbCommands(DebuggerState state)
@@ -3222,7 +3222,7 @@ QPoint GdbEngine::m_toolTipPos;
 
 bool GdbEngine::showToolTip()
 {
-    QByteArray iname = tooltipIName();
+    QByteArray iname = tooltipIName(m_toolTipExpression);
 
     if (!theDebuggerBoolSetting(UseToolTipsInMainEditor)) {
         watchHandler()->removeData(iname);
@@ -3257,8 +3257,10 @@ void GdbEngine::setToolTipExpression(const QPoint &mousePos,
     m_toolTipPos = mousePos;
     int line, column;
     QString exp = cppExpressionAt(editor, cursorPos, &line, &column);
-    if (exp == m_toolTipExpression)
+    if (!exp.isEmpty() && exp == m_toolTipExpression) {
+        showToolTip();
         return;
+    }
 
     m_toolTipExpression = exp;
 
@@ -3326,7 +3328,7 @@ void GdbEngine::setToolTipExpression(const QPoint &mousePos,
     WatchData toolTip;
     toolTip.exp = exp.toLatin1();
     toolTip.name = exp;
-    toolTip.iname = tooltipIName();
+    toolTip.iname = tooltipIName(exp);
     watchHandler()->removeData(toolTip.iname);
     watchHandler()->insertData(toolTip);
 }
diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h
index 9d22e979406..2c899d85745 100644
--- a/src/plugins/debugger/gdb/gdbengine.h
+++ b/src/plugins/debugger/gdb/gdbengine.h
@@ -525,7 +525,7 @@ private: ////////// View & Data Stuff //////////
 
     static QString m_toolTipExpression;
     static QPoint m_toolTipPos;
-    static QByteArray tooltipIName();
+    static QByteArray tooltipIName(const QString &exp);
 
     // HACK:
     StackFrame m_targetFrame;
diff --git a/src/plugins/debugger/gdb/pythongdbengine.cpp b/src/plugins/debugger/gdb/pythongdbengine.cpp
index b4bf14664e0..8126c95ba57 100644
--- a/src/plugins/debugger/gdb/pythongdbengine.cpp
+++ b/src/plugins/debugger/gdb/pythongdbengine.cpp
@@ -60,8 +60,11 @@ void GdbEngine::updateLocalsPython(const QByteArray &varList)
     expanded += "formats:" + handler->individualFormatRequests();
 
     QByteArray watchers;
-    if (!m_toolTipExpression.isEmpty())
-        watchers += m_toolTipExpression.toLatin1() + '#' + tooltipIName();
+    if (!m_toolTipExpression.isEmpty()) {
+        watchers += m_toolTipExpression.toLatin1();
+        watchers += '#';
+        watchers += tooltipIName(m_toolTipExpression);
+    }
 
     QHash<QByteArray, int> watcherNames = handler->watcherNames();
     QHashIterator<QByteArray, int> it(watcherNames);
-- 
GitLab