diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index aea1d709967..9d65ae466fd 100644 --- a/src/plugins/debugger/debuggerengine.cpp +++ b/src/plugins/debugger/debuggerengine.cpp @@ -277,7 +277,8 @@ public: m_stackHandler(engine), m_threadsHandler(engine), m_watchHandler(engine), - m_disassemblerAgent(engine) + m_disassemblerAgent(engine), + m_toolTipManager(engine) { m_logWindow = new LogWindow(m_engine); // Needed before start() m_logWindow->setObjectName(QLatin1String(DOCKWIDGET_OUTPUT)); @@ -327,7 +328,7 @@ public: // Give up ownership on claimed breakpoints. m_breakHandler.releaseAllBreakpoints(); - DebuggerToolTipManager::deregisterEngine(m_engine); + m_toolTipManager.deregisterEngine(); m_memoryAgents.handleDebuggerFinished(); delete m_perspective; @@ -392,7 +393,7 @@ public: m_watchHandler.resetLocation(); m_threadsHandler.resetLocation(); m_disassemblerAgent.resetLocation(); - DebuggerToolTipManager::resetLocation(); + m_toolTipManager.resetLocation(); } void selectThread(int index) @@ -522,6 +523,7 @@ public: OptionalAction m_snapshotAction{tr("Take Snapshot of Process State")}; QPointer m_terminalRunner; + DebuggerToolTipManager m_toolTipManager; }; void DebuggerEnginePrivate::setupViews() @@ -1733,10 +1735,8 @@ void DebuggerEngine::setState(DebuggerState state, bool forced) if (!forced && !isAllowedTransition(oldState, state)) qDebug() << "*** UNEXPECTED STATE TRANSITION: " << this << msg; - if (state == EngineRunRequested) { - DebuggerToolTipManager::registerEngine(this); + if (state == EngineRunRequested) emit engineStarted(); - } showMessage(msg, LogDebug); @@ -1797,6 +1797,16 @@ void DebuggerEngine::updateMarkers() d->m_disassemblerAgent.updateLocationMarker(); } +void DebuggerEngine::updateToolTips() +{ + d->m_toolTipManager.updateToolTips(); +} + +DebuggerToolTipManager *DebuggerEngine::toolTipManager() +{ + return &d->m_toolTipManager; +} + bool DebuggerEngine::debuggerActionsEnabled() const { return debuggerActionsEnabledHelper(d->m_state); @@ -2206,7 +2216,7 @@ void DebuggerEngine::updateLocalsView(const GdbMi &all) .arg(++count).arg(LogWindow::logTimeStamp()), LogMiscInput); showMessage(tr("Finished retrieving data"), 400, StatusBar); - DebuggerToolTipManager::updateEngine(this); + d->m_toolTipManager.updateToolTips(); const bool partial = all["partial"].toInt(); if (!partial) diff --git a/src/plugins/debugger/debuggerengine.h b/src/plugins/debugger/debuggerengine.h index c2d860bd21b..ec5ae85f0e4 100644 --- a/src/plugins/debugger/debuggerengine.h +++ b/src/plugins/debugger/debuggerengine.h @@ -77,6 +77,7 @@ class SourceFilesHandler; class WatchHandler; class WatchTreeView; class DebuggerToolTipContext; +class DebuggerToolTipManager; class MemoryViewSetupData; class TerminalRunner; @@ -372,6 +373,9 @@ public: Utils::Perspective *perspective() const; void updateMarkers(); + void updateToolTips(); + DebuggerToolTipManager *toolTipManager(); + signals: void engineStarted(); void engineFinished(); diff --git a/src/plugins/debugger/debuggerplugin.cpp b/src/plugins/debugger/debuggerplugin.cpp index 200c2c83b98..8f7643d7bb4 100644 --- a/src/plugins/debugger/debuggerplugin.cpp +++ b/src/plugins/debugger/debuggerplugin.cpp @@ -49,7 +49,6 @@ #include "watchwindow.h" #include "watchutils.h" #include "unstartedappwatcherdialog.h" -#include "debuggertooltipmanager.h" #include "localsandexpressionswindow.h" #include "loadcoredialog.h" #include "sourceutils.h" @@ -756,7 +755,6 @@ public: bool m_shuttingDown = false; DebuggerSettings *m_debuggerSettings = nullptr; QStringList m_arguments; - DebuggerToolTipManager m_toolTipManager; const QSharedPointer m_globalDebuggerOptions; DebuggerItemManager m_debuggerItemManager; @@ -2014,8 +2012,6 @@ void DebuggerPluginPrivate::requestMark(TextEditorWidget *widget, int lineNumber void DebuggerPluginPrivate::setInitialState() { - m_toolTipManager.closeAllToolTips(); - m_startAndDebugApplicationAction.setEnabled(true); m_attachToQmlPortAction.setEnabled(true); m_attachToCoreAction.setEnabled(true); @@ -2081,20 +2077,17 @@ void DebuggerPluginPrivate::sessionLoaded() { BreakpointManager::loadSessionData(); WatchHandler::loadSessionData(); - DebuggerToolTipManager::loadSessionData(); } void DebuggerPluginPrivate::aboutToUnloadSession() { BreakpointManager::aboutToUnloadSession(); - m_toolTipManager.sessionAboutToChange(); } void DebuggerPluginPrivate::aboutToSaveSession() { WatchHandler::saveSessionData(); BreakpointManager::saveSessionData(); - DebuggerToolTipManager::saveSessionData(); } void DebuggerPluginPrivate::aboutToShutdown() @@ -2414,15 +2407,8 @@ void DebuggerPluginPrivate::onModeChanged(Id mode) // also on shutdown. if (mode == MODE_DEBUG) { -// if (EngineManager::engines().isEmpty()) -// DebuggerMainWindow::instance()->restorePerspective(Constants::PRESET_PERSPECTIVE_ID); - EngineManager::selectUiForCurrentEngine(); if (IEditor *editor = EditorManager::currentEditor()) editor->widget()->setFocus(); - - m_toolTipManager.debugModeEntered(); - } else { - m_toolTipManager.leavingDebugMode(); } } diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index f3b33128963..2cc30312272 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -31,7 +31,6 @@ #include "debuggerinternalconstants.h" #include "debuggermainwindow.h" #include "debuggerprotocol.h" -#include "snapshothandler.h" #include "sourceutils.h" #include "stackhandler.h" #include "watchhandler.h" @@ -41,9 +40,12 @@ #include #include #include +#include #include +#include + #include #include @@ -71,6 +73,7 @@ #include using namespace Core; +using namespace ProjectExplorer; using namespace TextEditor; using namespace Utils; @@ -106,11 +109,49 @@ const char treeInameAttributeC[] = "iname"; // const char modelRowElementC[] = "row"; const char modelItemElementC[] = "item"; -static void purgeClosedToolTips(); - class DebuggerToolTipHolder; -static QVector m_tooltips; -static bool m_debugModeActive; + +class DebuggerToolTipManagerPrivate : public QObject +{ +public: + explicit DebuggerToolTipManagerPrivate(DebuggerEngine *engine); + + void slotTooltipOverrideRequested(TextEditor::TextEditorWidget *editorWidget, + const QPoint &point, int pos, bool *handled); + void slotEditorOpened(Core::IEditor *e); + void hideAllToolTips(); + void purgeClosedToolTips(); + + void onModeChanged(Id mode) + { + if (mode == Constants::MODE_DEBUG) { + // if (EngineManager::engines().isEmpty()) + // DebuggerMainWindow::instance()->restorePerspective(Constants::PRESET_PERSPRECTIVE_ID); + debugModeEntered(); + } else { + leavingDebugMode(); + } + } + + void setupEditors(); + + void debugModeEntered(); + void leavingDebugMode(); + + void sessionAboutToChange(); + void loadSessionData(); + void saveSessionData(); + + void updateVisibleToolTips(); + void closeAllToolTips(); + + bool eventFilter(QObject *, QEvent *) override; + +public: + DebuggerEngine *m_engine; + QVector m_tooltips; + bool m_debugModeActive = false; +}; // Forward a stream reader across end elements looking for the // next start element of a desired type. @@ -652,10 +693,10 @@ public: DebuggerTooltipState state; }; -static void hideAllToolTips() +void DebuggerToolTipManagerPrivate::hideAllToolTips() { purgeClosedToolTips(); - foreach (const DebuggerToolTipHolder *tooltip, m_tooltips) + for (const DebuggerToolTipHolder *tooltip : qAsConst(m_tooltips)) tooltip->widget->hide(); } @@ -950,19 +991,17 @@ void DebuggerToolTipHolder::saveSessionData(QXmlStreamWriter &w) const (by file name and function) acquire the engine, others release. */ -static DebuggerToolTipManager *m_instance = nullptr; - -DebuggerToolTipManager::DebuggerToolTipManager() +DebuggerToolTipManager::DebuggerToolTipManager(DebuggerEngine *engine) + : d(new DebuggerToolTipManagerPrivate(engine)) { - m_instance = this; } DebuggerToolTipManager::~DebuggerToolTipManager() { - m_instance = nullptr; + delete d; } -void DebuggerToolTipManager::updateVisibleToolTips() +void DebuggerToolTipManagerPrivate::updateVisibleToolTips() { purgeClosedToolTips(); if (m_tooltips.isEmpty()) @@ -985,7 +1024,7 @@ void DebuggerToolTipManager::updateVisibleToolTips() } // Reposition and show all tooltips of that file. - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) { + for (DebuggerToolTipHolder *tooltip : qAsConst(m_tooltips)) { if (tooltip->context.fileName == fileName) tooltip->positionShow(toolTipEditor->editorWidget()); else @@ -993,56 +1032,48 @@ void DebuggerToolTipManager::updateVisibleToolTips() } } -void DebuggerToolTipManager::updateEngine(DebuggerEngine *engine) +void DebuggerToolTipManager::updateToolTips() { - QTC_ASSERT(engine, return); - purgeClosedToolTips(); - if (m_tooltips.isEmpty()) + d->purgeClosedToolTips(); + if (d->m_tooltips.isEmpty()) return; // Stack frame changed: All tooltips of that file acquire the engine, // all others release (arguable, this could be more precise?) - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) - tooltip->updateTooltip(engine); - updateVisibleToolTips(); // Move tooltip when stepping in same file. + for (DebuggerToolTipHolder *tooltip : qAsConst(d->m_tooltips)) + tooltip->updateTooltip(d->m_engine); + d->updateVisibleToolTips(); // Move tooltip when stepping in same file. } -void DebuggerToolTipManager::registerEngine(DebuggerEngine *engine) -{ - Q_UNUSED(engine) - DEBUG("REGISTER ENGINE"); -} - -void DebuggerToolTipManager::deregisterEngine(DebuggerEngine *engine) +void DebuggerToolTipManager::deregisterEngine() { DEBUG("DEREGISTER ENGINE"); - QTC_ASSERT(engine, return); - purgeClosedToolTips(); + d->purgeClosedToolTips(); - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) - if (tooltip->context.engineType == engine->objectName()) + for (DebuggerToolTipHolder *tooltip : qAsConst(d->m_tooltips)) + if (tooltip->context.engineType == d->m_engine->objectName()) tooltip->releaseEngine(); - saveSessionData(); + d->saveSessionData(); // FIXME: For now remove all. - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) + for (DebuggerToolTipHolder *tooltip : qAsConst(d->m_tooltips)) tooltip->destroy(); - purgeClosedToolTips(); + d->purgeClosedToolTips(); } -bool DebuggerToolTipManager::hasToolTips() +bool DebuggerToolTipManager::hasToolTips() const { - return !m_tooltips.isEmpty(); + return !d->m_tooltips.isEmpty(); } -void DebuggerToolTipManager::sessionAboutToChange() +void DebuggerToolTipManagerPrivate::sessionAboutToChange() { closeAllToolTips(); } -void DebuggerToolTipManager::loadSessionData() +void DebuggerToolTipManagerPrivate::loadSessionData() { closeAllToolTips(); const QString data = sessionValue(sessionSettingsKeyC).toString(); @@ -1098,7 +1129,7 @@ void DebuggerToolTipManager::loadSessionData() } } -void DebuggerToolTipManager::saveSessionData() +void DebuggerToolTipManagerPrivate::saveSessionData() { QString data; purgeClosedToolTips(); @@ -1107,7 +1138,7 @@ void DebuggerToolTipManager::saveSessionData() w.writeStartDocument(); w.writeStartElement(QLatin1String(sessionDocumentC)); w.writeAttribute(QLatin1String(sessionVersionAttributeC), QLatin1String("1.0")); - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) + for (DebuggerToolTipHolder *tooltip : qAsConst(m_tooltips)) if (tooltip->widget->isPinned) tooltip->saveSessionData(w); w.writeEndDocument(); @@ -1118,19 +1149,38 @@ void DebuggerToolTipManager::saveSessionData() void DebuggerToolTipManager::closeAllToolTips() { - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) + d->closeAllToolTips(); +} + +void DebuggerToolTipManagerPrivate::closeAllToolTips() +{ + for (DebuggerToolTipHolder *tooltip : qAsConst(m_tooltips)) tooltip->destroy(); m_tooltips.clear(); } void DebuggerToolTipManager::resetLocation() { - purgeClosedToolTips(); - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) + d->purgeClosedToolTips(); + for (DebuggerToolTipHolder *tooltip : qAsConst(d->m_tooltips)) tooltip->widget->pin(); } -static void slotTooltipOverrideRequested +DebuggerToolTipManagerPrivate::DebuggerToolTipManagerPrivate(DebuggerEngine *engine) + : m_engine(engine) +{ + connect(ModeManager::instance(), &ModeManager::currentModeChanged, + this, &DebuggerToolTipManagerPrivate::onModeChanged); + connect(SessionManager::instance(), &SessionManager::sessionLoaded, + this, &DebuggerToolTipManagerPrivate::loadSessionData); + connect(SessionManager::instance(), &SessionManager::aboutToSaveSession, + this, &DebuggerToolTipManagerPrivate::saveSessionData); + connect(SessionManager::instance(), &SessionManager::aboutToUnloadSession, + this, &DebuggerToolTipManagerPrivate::sessionAboutToChange); + setupEditors(); +} + +void DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested (TextEditorWidget *editorWidget, const QPoint &point, int pos, bool *handled) { QTC_ASSERT(handled, return); @@ -1141,12 +1191,11 @@ static void slotTooltipOverrideRequested return; const TextDocument *document = editorWidget->textDocument(); - DebuggerEngine *engine = EngineManager::currentEngine(); - if (!engine || !engine->canDisplayTooltip()) + if (!m_engine || !m_engine->canDisplayTooltip()) return; DebuggerToolTipContext context; - context.engineType = engine->objectName(); + context.engineType = m_engine->objectName(); context.fileName = document->filePath().toString(); context.position = pos; editorWidget->convertPosition(pos, &context.line, &context.column); @@ -1166,7 +1215,7 @@ static void slotTooltipOverrideRequested purgeClosedToolTips(); // Prefer a filter on an existing local variable if it can be found. - const WatchItem *localVariable = engine->watchHandler()->findCppLocalVariable(context.expression); + const WatchItem *localVariable = m_engine->watchHandler()->findCppLocalVariable(context.expression); if (localVariable) { context.expression = localVariable->exp; if (context.expression.isEmpty()) @@ -1189,7 +1238,7 @@ static void slotTooltipOverrideRequested ToolTip::show(point, tooltip->widget, DebuggerMainWindow::instance()); } DEBUG("SYNC IN STATE" << tooltip->state); - tooltip->updateTooltip(engine); + tooltip->updateTooltip(m_engine); *handled = true; @@ -1213,8 +1262,8 @@ static void slotTooltipOverrideRequested tooltip->context.mousePosition = point; m_tooltips.push_back(tooltip); tooltip->setState(PendingUnshown); - if (engine->canHandleToolTip(context)) { - engine->updateItem(context.iname); + if (m_engine->canHandleToolTip(context)) { + m_engine->updateItem(context.iname); } else { ToolTip::show(point, DebuggerToolTipManager::tr("Expression too complex"), DebuggerMainWindow::instance()); @@ -1224,19 +1273,19 @@ static void slotTooltipOverrideRequested } } -static void slotEditorOpened(IEditor *e) +void DebuggerToolTipManagerPrivate::slotEditorOpened(IEditor *e) { // Move tooltip along when scrolled. if (auto textEditor = qobject_cast(e)) { TextEditorWidget *widget = textEditor->editorWidget(); QObject::connect(widget->verticalScrollBar(), &QScrollBar::valueChanged, - &DebuggerToolTipManager::updateVisibleToolTips); + this, &DebuggerToolTipManagerPrivate::updateVisibleToolTips); QObject::connect(widget, &TextEditorWidget::tooltipOverrideRequested, - slotTooltipOverrideRequested); + this, &DebuggerToolTipManagerPrivate::slotTooltipOverrideRequested); } } -void DebuggerToolTipManager::debugModeEntered() +void DebuggerToolTipManagerPrivate::debugModeEntered() { // Hook up all signals in debug mode. if (!m_debugModeActive) { @@ -1245,18 +1294,24 @@ void DebuggerToolTipManager::debugModeEntered() topLevel->installEventFilter(this); EditorManager *em = EditorManager::instance(); connect(em, &EditorManager::currentEditorChanged, - &DebuggerToolTipManager::updateVisibleToolTips); - connect(em, &EditorManager::editorOpened, slotEditorOpened); + this, &DebuggerToolTipManagerPrivate::updateVisibleToolTips); + connect(em, &EditorManager::editorOpened, + this, &DebuggerToolTipManagerPrivate::slotEditorOpened); - foreach (IEditor *e, DocumentModel::editorsForOpenedDocuments()) - slotEditorOpened(e); - // Position tooltips delayed once all the editor placeholder layouting is done. - if (!m_tooltips.isEmpty()) - QTimer::singleShot(0, this, &DebuggerToolTipManager::updateVisibleToolTips); + setupEditors(); } } -void DebuggerToolTipManager::leavingDebugMode() +void DebuggerToolTipManagerPrivate::setupEditors() +{ + for (IEditor *e : DocumentModel::editorsForOpenedDocuments()) + slotEditorOpened(e); + // Position tooltips delayed once all the editor placeholder layouting is done. + if (!m_tooltips.isEmpty()) + QTimer::singleShot(0, this, &DebuggerToolTipManagerPrivate::updateVisibleToolTips); +} + +void DebuggerToolTipManagerPrivate::leavingDebugMode() { // Remove all signals in debug mode. if (m_debugModeActive) { @@ -1274,11 +1329,11 @@ void DebuggerToolTipManager::leavingDebugMode() } } -DebuggerToolTipContexts DebuggerToolTipManager::pendingTooltips(DebuggerEngine *engine) +DebuggerToolTipContexts DebuggerToolTipManager::pendingTooltips() const { - StackFrame frame = engine->stackHandler()->currentFrame(); + StackFrame frame = d->m_engine->stackHandler()->currentFrame(); DebuggerToolTipContexts rc; - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) { + for (DebuggerToolTipHolder *tooltip : qAsConst(d->m_tooltips)) { const DebuggerToolTipContext &context = tooltip->context; if (context.iname.startsWith("tooltip") && context.matchesFrame(frame)) rc.push_back(context); @@ -1286,7 +1341,7 @@ DebuggerToolTipContexts DebuggerToolTipManager::pendingTooltips(DebuggerEngine * return rc; } -bool DebuggerToolTipManager::eventFilter(QObject *o, QEvent *e) +bool DebuggerToolTipManagerPrivate::eventFilter(QObject *o, QEvent *e) { if (m_tooltips.isEmpty()) return false; @@ -1295,7 +1350,7 @@ bool DebuggerToolTipManager::eventFilter(QObject *o, QEvent *e) const auto me = static_cast(e); const QPoint dist = me->pos() - me->oldPos(); purgeClosedToolTips(); - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) { + for (DebuggerToolTipHolder *tooltip : qAsConst(m_tooltips)) { if (tooltip->widget && tooltip->widget->isVisible()) tooltip->widget->move(tooltip->widget->pos() + dist); } @@ -1307,7 +1362,7 @@ bool DebuggerToolTipManager::eventFilter(QObject *o, QEvent *e) const bool isMinimized = static_cast(o)->windowState() & Qt::WindowMinimized; if (wasMinimized ^ isMinimized) { purgeClosedToolTips(); - foreach (DebuggerToolTipHolder *tooltip, m_tooltips) + for (DebuggerToolTipHolder *tooltip : qAsConst(m_tooltips)) tooltip->widget->setVisible(!isMinimized); } break; @@ -1318,7 +1373,7 @@ bool DebuggerToolTipManager::eventFilter(QObject *o, QEvent *e) return false; } -static void purgeClosedToolTips() +void DebuggerToolTipManagerPrivate::purgeClosedToolTips() { for (int i = m_tooltips.size(); --i >= 0; ) { DebuggerToolTipHolder *tooltip = m_tooltips.at(i); diff --git a/src/plugins/debugger/debuggertooltipmanager.h b/src/plugins/debugger/debuggertooltipmanager.h index db3ec2af320..251addefbef 100644 --- a/src/plugins/debugger/debuggertooltipmanager.h +++ b/src/plugins/debugger/debuggertooltipmanager.h @@ -31,15 +31,10 @@ #include #include -QT_BEGIN_NAMESPACE -class QAbstractItemModel; -QT_END_NAMESPACE - namespace Debugger { namespace Internal { class DebuggerEngine; -class DebuggerCommand; class StackFrame; class DebuggerToolTipContext @@ -74,26 +69,20 @@ class DebuggerToolTipManager : public QObject Q_OBJECT public: - DebuggerToolTipManager(); + explicit DebuggerToolTipManager(DebuggerEngine *engine); ~DebuggerToolTipManager() override; - static void registerEngine(DebuggerEngine *engine); - static void deregisterEngine(DebuggerEngine *engine); - static void updateEngine(DebuggerEngine *engine); - static bool hasToolTips(); + void deregisterEngine(); + void updateToolTips(); + bool hasToolTips() const; - static DebuggerToolTipContexts pendingTooltips(DebuggerEngine *engine); + DebuggerToolTipContexts pendingTooltips() const; - bool eventFilter(QObject *, QEvent *) override; + void closeAllToolTips(); + void resetLocation(); - void debugModeEntered(); - void leavingDebugMode(); - void sessionAboutToChange(); - static void loadSessionData(); - static void saveSessionData(); - static void closeAllToolTips(); - static void resetLocation(); - static void updateVisibleToolTips(); +private: + class DebuggerToolTipManagerPrivate *d; }; } // namespace Internal diff --git a/src/plugins/debugger/pdb/pdbengine.cpp b/src/plugins/debugger/pdb/pdbengine.cpp index 5089365f7b5..339ad47794f 100644 --- a/src/plugins/debugger/pdb/pdbengine.cpp +++ b/src/plugins/debugger/pdb/pdbengine.cpp @@ -517,7 +517,7 @@ void PdbEngine::refreshLocals(const GdbMi &vars) handler->insertItems(vars); handler->notifyUpdateFinished(); - DebuggerToolTipManager::updateEngine(this); + updateToolTips(); } void PdbEngine::refreshStack(const GdbMi &stack) diff --git a/src/plugins/debugger/snapshothandler.cpp b/src/plugins/debugger/snapshothandler.cpp index 8b8289bc49c..3b0d26993ab 100644 --- a/src/plugins/debugger/snapshothandler.cpp +++ b/src/plugins/debugger/snapshothandler.cpp @@ -138,6 +138,8 @@ public: m_engineChooser->setModel(&m_engineModel); connect(m_engineChooser, static_cast(&QComboBox::activated), this, &EngineManagerPrivate::activateEngineByIndex); + connect(ModeManager::instance(), &ModeManager::currentModeChanged, + this, &EngineManagerPrivate::onModeChanged); } ~EngineManagerPrivate() @@ -145,6 +147,15 @@ public: delete m_engineChooser; } + void onModeChanged(Id mode) + { + if (mode == Constants::MODE_DEBUG) { + // if (EngineManager::engines().isEmpty()) + // DebuggerMainWindow::instance()->restorePerspective(Constants::PRESET_PERSPRECTIVE_ID); + selectUiForCurrentEngine(); + } + } + EngineItem *findEngineItem(DebuggerEngine *engine); void activateEngine(DebuggerEngine *engine); void activateEngineItem(EngineItem *engineItem); diff --git a/src/plugins/debugger/watchhandler.cpp b/src/plugins/debugger/watchhandler.cpp index 62108c6d64c..eccd1b1d7e4 100644 --- a/src/plugins/debugger/watchhandler.cpp +++ b/src/plugins/debugger/watchhandler.cpp @@ -1683,8 +1683,8 @@ bool WatchModel::contextMenuEvent(const ItemViewEvent &ev) }); addAction(menu, tr("Close Editor Tooltips"), - DebuggerToolTipManager::hasToolTips(), - [] { DebuggerToolTipManager::closeAllToolTips(); }); + m_engine->toolTipManager()->hasToolTips(), + [this] { m_engine->toolTipManager()->closeAllToolTips(); }); addAction(menu, tr("Copy View Contents to Clipboard"), true, @@ -2578,8 +2578,8 @@ static inline QJsonObject watcher(const QString &iname, const QString &exp) void WatchHandler::appendWatchersAndTooltipRequests(DebuggerCommand *cmd) { QJsonArray watchers; - DebuggerToolTipContexts toolTips = DebuggerToolTipManager::pendingTooltips(m_model->m_engine); - foreach (const DebuggerToolTipContext &p, toolTips) + const DebuggerToolTipContexts toolTips = m_engine->toolTipManager()->pendingTooltips(); + for (const DebuggerToolTipContext &p : toolTips) watchers.append(watcher(p.iname, p.expression)); QMapIterator it(WatchHandler::watcherNames());