From e0e5334d836ee75c2785221ee9f2fd4fdf72fea8 Mon Sep 17 00:00:00 2001 From: Viacheslav Tertychnyi Date: Thu, 2 Apr 2020 18:18:04 +0300 Subject: [PATCH] Debugger: Fix tooltips Fixes: QTCREATORBUG-19574 Fixes: QTCREATORBUG-23807 Change-Id: I61f997e69f4a747aff8c5e1044bb6d856494ae47 Reviewed-by: Christian Stenger --- src/plugins/debugger/cdb/cdbengine.cpp | 1 + src/plugins/debugger/debuggerengine.cpp | 4 ++++ src/plugins/debugger/debuggertooltipmanager.cpp | 8 ++++---- src/plugins/debugger/gdb/gdbengine.cpp | 1 + src/plugins/debugger/lldb/lldbengine.cpp | 1 + src/plugins/debugger/uvsc/uvscengine.cpp | 1 + 6 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 45e3cb36416..757110161ba 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -1081,6 +1081,7 @@ void CdbEngine::doUpdateLocals(const UpdateParameters &updateParameters) showMessage(response.data["msg"].data(), LogError); } watchHandler()->notifyUpdateFinished(); + updateToolTips(); }; runCommand(cmd); diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index a1c2aad6aba..93bc013ae14 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -2358,6 +2358,10 @@ void DebuggerEngine::updateItem(const QString &iname) QTC_CHECK(item); WatchModelBase *model = handler->model(); QTC_CHECK(model); + if (item && !item->wantsChildren) { + updateToolTips(); + return; + } if (item && !model->hasChildren(model->indexForItem(item))) { handler->notifyUpdateStarted(UpdateParameters(iname)); item->setValue(decodeData({}, "notaccessible")); diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index a815f17c70a..49aa316571d 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -1179,7 +1179,7 @@ DebuggerToolTipManagerPrivate::DebuggerToolTipManagerPrivate(DebuggerEngine *eng this, &DebuggerToolTipManagerPrivate::saveSessionData); connect(SessionManager::instance(), &SessionManager::aboutToUnloadSession, this, &DebuggerToolTipManagerPrivate::sessionAboutToChange); - setupEditors(); + debugModeEntered(); } void DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested @@ -1241,8 +1241,6 @@ void DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested DEBUG("SYNC IN STATE" << tooltip->state); tooltip->updateTooltip(m_engine); - *handled = true; - } else { context.iname = "tooltip." + toHex(context.expression); @@ -1256,7 +1254,6 @@ void DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested tooltip->context.mousePosition = point; ToolTip::move(point, DebuggerMainWindow::instance()); DEBUG("UPDATING DELAYED."); - *handled = true; } else { DEBUG("CREATING DELAYED."); tooltip = new DebuggerToolTipHolder(context); @@ -1272,6 +1269,8 @@ void DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested } } } + + *handled = true; } void DebuggerToolTipManagerPrivate::slotEditorOpened(IEditor *e) @@ -1323,6 +1322,7 @@ void DebuggerToolTipManagerPrivate::leavingDebugMode() foreach (IEditor *e, DocumentModel::editorsForOpenedDocuments()) { if (auto toolTipEditor = qobject_cast(e)) { toolTipEditor->editorWidget()->verticalScrollBar()->disconnect(this); + toolTipEditor->editorWidget()->disconnect(this); toolTipEditor->disconnect(this); } } diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 9c67a651a60..1518e1ee8e8 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -4818,6 +4818,7 @@ void GdbEngine::handleFetchVariables(const DebuggerResponse &response) m_inUpdateLocals = false; updateLocalsView(response.data); watchHandler()->notifyUpdateFinished(); + updateToolTips(); } QString GdbEngine::msgPtraceError(DebuggerStartMode sm) diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index a4dd48228aa..61d9012ccb0 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -786,6 +786,7 @@ void LldbEngine::doUpdateLocals(const UpdateParameters ¶ms) cmd.callback = [this](const DebuggerResponse &response) { updateLocalsView(response.data); watchHandler()->notifyUpdateFinished(); + updateToolTips(); }; runCommand(cmd); diff --git a/src/plugins/debugger/uvsc/uvscengine.cpp b/src/plugins/debugger/uvsc/uvscengine.cpp index ba28a449af1..bc796172c15 100644 --- a/src/plugins/debugger/uvsc/uvscengine.cpp +++ b/src/plugins/debugger/uvsc/uvscengine.cpp @@ -735,6 +735,7 @@ void UvscEngine::handleUpdateLocals(bool partial) updateLocalsView(all); watchHandler()->notifyUpdateFinished(); + updateToolTips(); } void UvscEngine::handleInsertBreakpoint(const QString &exp, const Breakpoint &bp)