diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index f4d141af6a4..47beba57068 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -299,6 +299,8 @@ public: { } + ~HoverHandlerRunner() { abortHandlers(); } + void startChecking(const QTextCursor &textCursor, const QPoint &point) { if (m_handlers.empty()) @@ -315,9 +317,7 @@ public: if (isCheckRunning(documentRevision, position)) return; - // Cancel currently running checks - for (BaseHoverHandler *handler : m_handlers) - handler->abort(); + abortHandlers(); // Update invocation data m_documentRevision = documentRevision; @@ -352,8 +352,6 @@ public: void onHandlerFinished(int documentRevision, int position, int priority) { - if (!m_widget) - return; QTC_ASSERT(m_currentHandlerIndex < m_handlers.size(), return); QTC_ASSERT(documentRevision == m_documentRevision, return); QTC_ASSERT(position == m_position, return); @@ -379,7 +377,13 @@ public: } private: - QPointer m_widget; + void abortHandlers() + { + for (BaseHoverHandler *handler : m_handlers) + handler->abort(); + } + + TextEditorWidget *m_widget; const QList &m_handlers; struct LastHandlerInfo {