diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 3757800a070..c036646c59e 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -377,7 +377,7 @@ void Client::activateDocument(TextEditor::TextDocument *document) for (Core::IEditor *editor : Core::DocumentModel::editorsForDocument(document)) { updateEditorToolBar(editor); if (auto textEditor = qobject_cast(editor)) - textEditor->editorWidget()->addHoverHandler(hoverHandler()); + textEditor->editorWidget()->addHoverHandler(&m_hoverHandler); } } @@ -387,6 +387,10 @@ void Client::deactivateDocument(TextEditor::TextDocument *document) resetAssistProviders(document); if (TextEditor::SyntaxHighlighter *highlighter = document->syntaxHighlighter()) highlighter->clearAllExtraFormats(); + for (Core::IEditor *editor : Core::DocumentModel::editorsForDocument(document)) { + if (auto textEditor = qobject_cast(editor)) + textEditor->editorWidget()->removeHoverHandler(&m_hoverHandler); + } } bool Client::documentOpen(TextEditor::TextDocument *document) const diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 570d29362eb..80bbe1323b4 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -5640,7 +5640,8 @@ void TextEditorWidget::showDefaultContextMenu(QContextMenuEvent *e, Id menuConte void TextEditorWidget::addHoverHandler(BaseHoverHandler *handler) { - d->m_hoverHandlers.append(handler); + if (!d->m_hoverHandlers.contains(handler)) + d->m_hoverHandlers.append(handler); } void TextEditorWidget::removeHoverHandler(BaseHoverHandler *handler)