From c1fd41c5b02b709da315ba052a5069a046a4c834 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 20 Mar 2015 14:44:02 +0100 Subject: [PATCH] Debugger: Replace empty tooltips by a "No valid expression" message Task-number: QTCREATORBUG-13774 Change-Id: I2c14a50c1457ca4f24843df2691fda83a790931b Reviewed-by: Christian Stenger Reviewed-by: Orgad Shaneh --- .../debugger/debuggertooltipmanager.cpp | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index a91c7409079..07028a144d0 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -831,8 +831,9 @@ void DebuggerToolTipHolder::setState(DebuggerTooltipState newState) bool ok = (state == New && newState == PendingUnshown) || (state == PendingUnshown && newState == PendingShown) || (state == PendingShown && newState == Acquired) - || (state == Acquired && (newState == Released)) - || (state == Released && (newState == Acquired)); + || (state == Acquired && newState == Released) + || (state == Acquired && newState == Acquired) + || (state == Released && newState == Acquired); // FIXME: These happen when a tooltip is re-used in findOrCreate. ok = ok @@ -856,9 +857,22 @@ void DebuggerToolTipHolder::destroy() void DebuggerToolTipHolder::releaseEngine() { + DEBUG("RELEASE ENGINE: STATE " << state); if (state == Released) return; - DEBUG("RELEASE ENGINE: STATE " << state); + + if (state == PendingShown) { + // This happens after hovering over something that looks roughly like + // a valid expression but can't be resolved by the debugger backend. + // (Out of scope items, keywords, ...) + ToolTip::show(context.mousePosition, + DebuggerToolTipManager::tr("No valid expression"), + Internal::mainWindow()); + QTC_ASSERT(widget, return); + widget->deleteLater(); + return; + } + setState(Released); QTC_ASSERT(widget, return);