From 46fcfa90180f0ea705b06bb34ebb68be15011be9 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 6 Mar 2015 13:36:42 +0100 Subject: [PATCH] Debugger: Remove widget argument from tooltip request The only information ever used is whether it's c++ or not. Change-Id: I4ca00663856dd66cbdf58c468f175a8c9e41d6a5 Reviewed-by: hjk --- src/plugins/debugger/cdb/cdbengine.cpp | 4 +--- src/plugins/debugger/cdb/cdbengine.h | 3 +-- src/plugins/debugger/debuggerengine.cpp | 3 +-- src/plugins/debugger/debuggerengine.h | 3 +-- src/plugins/debugger/debuggertooltipmanager.cpp | 12 +++++++++--- src/plugins/debugger/debuggertooltipmanager.h | 1 + src/plugins/debugger/gdb/gdbengine.cpp | 7 +++---- src/plugins/debugger/gdb/gdbengine.h | 3 +-- src/plugins/debugger/lldb/lldbengine.cpp | 6 ++---- src/plugins/debugger/lldb/lldbengine.h | 3 +-- src/plugins/debugger/pdb/pdbengine.cpp | 4 +--- src/plugins/debugger/pdb/pdbengine.h | 3 +-- src/plugins/debugger/qml/qmlcppengine.cpp | 15 ++++++--------- src/plugins/debugger/qml/qmlcppengine.h | 3 +-- src/plugins/debugger/qml/qmlengine.cpp | 6 +++--- src/plugins/debugger/qml/qmlengine.h | 6 ++---- src/plugins/debugger/sourceutils.cpp | 7 ------- src/plugins/debugger/sourceutils.h | 1 - 18 files changed, 35 insertions(+), 55 deletions(-) diff --git a/src/plugins/debugger/cdb/cdbengine.cpp b/src/plugins/debugger/cdb/cdbengine.cpp index 8de20012b95..b239ca3e4c6 100644 --- a/src/plugins/debugger/cdb/cdbengine.cpp +++ b/src/plugins/debugger/cdb/cdbengine.cpp @@ -412,10 +412,8 @@ void CdbEngine::syncVerboseLog(bool verboseLog) postCommand(m_verboseLog ? QByteArray("!sym noisy") : QByteArray("!sym quiet"), 0); } -bool CdbEngine::setToolTipExpression(TextEditor::TextEditorWidget *editorWidget, - const DebuggerToolTipContext &context) +bool CdbEngine::setToolTipExpression(const DebuggerToolTipContext &context) { - Q_UNUSED(editorWidget); Q_UNUSED(context); // Tooltips matching local variables are already handled in the // base class. We don't handle anything else here in CDB diff --git a/src/plugins/debugger/cdb/cdbengine.h b/src/plugins/debugger/cdb/cdbengine.h index 6bd1cf942c6..b2708e98c8c 100644 --- a/src/plugins/debugger/cdb/cdbengine.h +++ b/src/plugins/debugger/cdb/cdbengine.h @@ -77,8 +77,7 @@ public: // Factory function that returns 0 if the debug engine library cannot be found. - virtual bool setToolTipExpression(TextEditor::TextEditorWidget *editorWidget, - const DebuggerToolTipContext &context); + virtual bool setToolTipExpression(const DebuggerToolTipContext &context); virtual DebuggerEngine *cppEngine() { return this; } diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index a151eff0971..ef7c3fd72ce 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -1434,8 +1434,7 @@ Terminal *DebuggerEngine::terminal() const return &d->m_terminal; } -bool DebuggerEngine::setToolTipExpression(TextEditorWidget *, - const DebuggerToolTipContext &) +bool DebuggerEngine::setToolTipExpression(const DebuggerToolTipContext &) { return false; } diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index 8de13f30e23..2ff08231cc9 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -137,8 +137,7 @@ public: const DebuggerStartParameters &startParameters() const; DebuggerStartParameters &startParameters(); - virtual bool setToolTipExpression(TextEditor::TextEditorWidget *, - const Internal::DebuggerToolTipContext &); + virtual bool setToolTipExpression(const Internal::DebuggerToolTipContext &); virtual void updateWatchData(const Internal::WatchData &data); virtual void watchDataSelected(const QByteArray &iname); diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index e7d82050e60..5eb5c59883e 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -43,6 +43,9 @@ #include #include #include + +#include + #include #include @@ -669,7 +672,7 @@ static void hideAllToolTips() */ DebuggerToolTipContext::DebuggerToolTipContext() - : position(0), line(0), column(0), scopeFromLine(0), scopeToLine(0) + : position(0), line(0), column(0), scopeFromLine(0), scopeToLine(0), isCppEditor(true) { } @@ -1165,18 +1168,21 @@ static void slotTooltipOverrideRequested if (!boolSetting(UseToolTipsInMainEditor)) return; + const TextDocument *document = editorWidget->textDocument(); DebuggerEngine *engine = currentEngine(); if (!engine || !engine->canDisplayTooltip()) return; DebuggerToolTipContext context; context.engineType = engine->objectName(); - context.fileName = editorWidget->textDocument()->filePath().toString(); + context.fileName = document->filePath().toString(); context.position = pos; editorWidget->convertPosition(pos, &context.line, &context.column); QString raw = cppExpressionAt(editorWidget, context.position, &context.line, &context.column, &context.function, &context.scopeFromLine, &context.scopeToLine); context.expression = fixCppExpression(raw); + context.isCppEditor = CppTools::ProjectFile::classify(document->filePath().toString()) + != CppTools::ProjectFile::Unclassified; if (context.expression.isEmpty()) { ToolTip::show(point, DebuggerToolTipManager::tr("No valid expression"), @@ -1224,7 +1230,7 @@ static void slotTooltipOverrideRequested tooltip->setState(PendingShown); else QTC_CHECK(false); - *handled = engine->setToolTipExpression(editorWidget, context); + *handled = engine->setToolTipExpression(context); if (!*handled) { ToolTip::show(point, DebuggerToolTipManager::tr("Expression too complex"), Internal::mainWindow()); diff --git a/src/plugins/debugger/debuggertooltipmanager.h b/src/plugins/debugger/debuggertooltipmanager.h index 3174006c5e9..49a3e92628d 100644 --- a/src/plugins/debugger/debuggertooltipmanager.h +++ b/src/plugins/debugger/debuggertooltipmanager.h @@ -71,6 +71,7 @@ public: QPoint mousePosition; QString expression; QByteArray iname; + bool isCppEditor; }; typedef QList DebuggerToolTipContexts; diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index a4bf2d1b17b..1eb2c4099e8 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -67,10 +67,10 @@ #include #include + #include #include #include -#include #include #include @@ -3699,10 +3699,9 @@ void GdbEngine::handleRegisterListValues(const DebuggerResponse &response) // ////////////////////////////////////////////////////////////////////// -bool GdbEngine::setToolTipExpression(TextEditor::TextEditorWidget *editor, - const DebuggerToolTipContext &context) +bool GdbEngine::setToolTipExpression(const DebuggerToolTipContext &context) { - if (state() != InferiorStopOk || !isCppEditor(editor)) + if (state() != InferiorStopOk || !context.isCppEditor) return false; UpdateParameters params; diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index 24520daa8e9..bfa310770a8 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -383,8 +383,7 @@ protected: // // Watch specific stuff // - virtual bool setToolTipExpression(TextEditor::TextEditorWidget *editor, - const DebuggerToolTipContext &); + virtual bool setToolTipExpression(const DebuggerToolTipContext &); virtual void assignValueInDebugger(const WatchData *data, const QString &expr, const QVariant &value); diff --git a/src/plugins/debugger/lldb/lldbengine.cpp b/src/plugins/debugger/lldb/lldbengine.cpp index 8dc55c0ac57..9fb7726198f 100644 --- a/src/plugins/debugger/lldb/lldbengine.cpp +++ b/src/plugins/debugger/lldb/lldbengine.cpp @@ -54,8 +54,6 @@ #include #include -#include - #include #include #include @@ -795,9 +793,9 @@ void LldbEngine::refreshSymbols(const GdbMi &symbols) // ////////////////////////////////////////////////////////////////////// -bool LldbEngine::setToolTipExpression(TextEditor::TextEditorWidget *editorWidget, const DebuggerToolTipContext &context) +bool LldbEngine::setToolTipExpression(const DebuggerToolTipContext &context) { - if (state() != InferiorStopOk || !isCppEditor(editorWidget)) { + if (state() != InferiorStopOk || !context.isCppEditor) { //qDebug() << "SUPPRESSING DEBUGGER TOOLTIP, INFERIOR NOT STOPPED " // " OR NOT A CPPEDITOR"; return false; diff --git a/src/plugins/debugger/lldb/lldbengine.h b/src/plugins/debugger/lldb/lldbengine.h index bdcda805cf5..9991db443ff 100644 --- a/src/plugins/debugger/lldb/lldbengine.h +++ b/src/plugins/debugger/lldb/lldbengine.h @@ -84,8 +84,7 @@ private: void shutdownEngine(); void abortDebugger(); - bool setToolTipExpression(TextEditor::TextEditorWidget *editorWidget, - const DebuggerToolTipContext &); + bool setToolTipExpression(const DebuggerToolTipContext &); void continueInferior(); void interruptInferior(); diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index 21dc7a2bbad..36a5a1f4a58 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -50,7 +50,6 @@ #include -#include #include #include #include @@ -371,8 +370,7 @@ void PdbEngine::refreshSymbols(const GdbMi &symbols) Internal::showModuleSymbols(moduleName, syms); } -bool PdbEngine::setToolTipExpression(TextEditor::TextEditorWidget *, - const DebuggerToolTipContext &ctx) +bool PdbEngine::setToolTipExpression(const DebuggerToolTipContext &ctx) { if (state() != InferiorStopOk) return false; diff --git a/src/plugins/debugger/pdb/pdbengine.h b/src/plugins/debugger/pdb/pdbengine.h index 22f794c1a48..9d190d31e8f 100644 --- a/src/plugins/debugger/pdb/pdbengine.h +++ b/src/plugins/debugger/pdb/pdbengine.h @@ -66,8 +66,7 @@ private: void shutdownInferior(); void shutdownEngine(); - bool setToolTipExpression(TextEditor::TextEditorWidget *, - const DebuggerToolTipContext &); + bool setToolTipExpression(const DebuggerToolTipContext &); void continueInferior(); void interruptInferior(); diff --git a/src/plugins/debugger/qml/qmlcppengine.cpp b/src/plugins/debugger/qml/qmlcppengine.cpp index 23e0187f636..dab64a71a49 100644 --- a/src/plugins/debugger/qml/qmlcppengine.cpp +++ b/src/plugins/debugger/qml/qmlcppengine.cpp @@ -32,6 +32,7 @@ #include "qmlengine.h" #include +#include #include #include #include @@ -39,8 +40,6 @@ #include #include -#include -#include #include #include #include @@ -103,15 +102,13 @@ bool QmlCppEngine::canDisplayTooltip() const return m_cppEngine->canDisplayTooltip() || m_qmlEngine->canDisplayTooltip(); } -bool QmlCppEngine::setToolTipExpression(TextEditor::TextEditorWidget *editorWidget, const DebuggerToolTipContext &ctx) +bool QmlCppEngine::setToolTipExpression(const DebuggerToolTipContext &ctx) { - QTC_ASSERT(editorWidget, return false); bool success = false; - Core::Id id = editorWidget->textDocument()->id(); - if (id == CppEditor::Constants::CPPEDITOR_ID) - success = m_cppEngine->setToolTipExpression(editorWidget, ctx); - else if (id == QmlJSEditor::Constants::C_QMLJSEDITOR_ID) - success = m_qmlEngine->setToolTipExpression(editorWidget, ctx); + if (ctx.isCppEditor) + success = m_cppEngine->setToolTipExpression(ctx); + else + success = m_qmlEngine->setToolTipExpression(ctx); return success; } diff --git a/src/plugins/debugger/qml/qmlcppengine.h b/src/plugins/debugger/qml/qmlcppengine.h index 917bc98af12..6960cde7fce 100644 --- a/src/plugins/debugger/qml/qmlcppengine.h +++ b/src/plugins/debugger/qml/qmlcppengine.h @@ -47,8 +47,7 @@ public: ~QmlCppEngine(); bool canDisplayTooltip() const; - bool setToolTipExpression(TextEditor::TextEditorWidget *editorWidget, - const DebuggerToolTipContext &); + bool setToolTipExpression(const DebuggerToolTipContext &); void updateWatchData(const WatchData &data); void watchDataSelected(const QByteArray &iname); diff --git a/src/plugins/debugger/qml/qmlengine.cpp b/src/plugins/debugger/qml/qmlengine.cpp index f961ca578da..6f6e7d2ccd6 100644 --- a/src/plugins/debugger/qml/qmlengine.cpp +++ b/src/plugins/debugger/qml/qmlengine.cpp @@ -973,12 +973,12 @@ void QmlEngine::requestModuleSymbols(const QString &moduleName) // ////////////////////////////////////////////////////////////////////// -bool QmlEngine::setToolTipExpression(TextEditor::TextEditorWidget *editorWidget, - const DebuggerToolTipContext &ctx) +bool QmlEngine::setToolTipExpression(const DebuggerToolTipContext &context) { // This is processed by QML inspector, which has dependencies to // the qml js editor. Makes life easier. - emit tooltipRequested(ctx.mousePosition, editorWidget, ctx.position); + // FIXME: Except that there isn't any attached. + emit tooltipRequested(context); return true; } diff --git a/src/plugins/debugger/qml/qmlengine.h b/src/plugins/debugger/qml/qmlengine.h index aed646888ea..5993399699c 100644 --- a/src/plugins/debugger/qml/qmlengine.h +++ b/src/plugins/debugger/qml/qmlengine.h @@ -89,8 +89,7 @@ public: void insertBreakpoint(Breakpoint bp); signals: - void tooltipRequested(const QPoint &mousePos, - TextEditor::TextEditorWidget *editorWidget, int cursorPos); + void tooltipRequested(const DebuggerToolTipContext &context); private slots: void disconnected(); @@ -128,8 +127,7 @@ private: void shutdownInferior(); void shutdownEngine(); - bool setToolTipExpression(TextEditor::TextEditorWidget *editorWidget, - const DebuggerToolTipContext &); + bool setToolTipExpression(const DebuggerToolTipContext &); void continueInferior(); void interruptInferior(); diff --git a/src/plugins/debugger/sourceutils.cpp b/src/plugins/debugger/sourceutils.cpp index 0e4ff6ae389..e70696ccc55 100644 --- a/src/plugins/debugger/sourceutils.cpp +++ b/src/plugins/debugger/sourceutils.cpp @@ -261,13 +261,6 @@ bool getUninitializedVariables(const Snapshot &snapshot, } -// Editor tooltip support -bool isCppEditor(TextEditorWidget *editorWidget) -{ - const TextDocument *document = editorWidget->textDocument(); - return ProjectFile::classify(document->filePath().toString()) != ProjectFile::Unclassified; -} - QString cppFunctionAt(const QString &fileName, int line, int column) { const Snapshot snapshot = CppModelManager::instance()->snapshot(); diff --git a/src/plugins/debugger/sourceutils.h b/src/plugins/debugger/sourceutils.h index 4f0a72cf5d0..9d3d50be97e 100644 --- a/src/plugins/debugger/sourceutils.h +++ b/src/plugins/debugger/sourceutils.h @@ -40,7 +40,6 @@ namespace Debugger { namespace Internal { // Editor tooltip support -bool isCppEditor(TextEditor::TextEditorWidget *editorWidget); QString cppExpressionAt(TextEditor::TextEditorWidget *editorWidget, int pos, int *line, int *column, QString *function = 0, int *scopeFromLine = 0, int *scopeToLine = 0);