diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-06-26 11:15:19 +0200 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2017-07-03 07:42:12 +0000 |
commit | 999e6bc6714600069eadd916d861f21e70faba95 (patch) | |
tree | ea2988b65584321ea30193e9ed64e876f1526ba3 /src/plugins/texteditor/basehoverhandler.cpp | |
parent | 6e51fd2a0c5e1bd4a8e8bd12b0b0c2dec4854d66 (diff) |
TextEditor: Allow asynchronous hover handlers
Change-Id: I956b126e2c779aa81f86e4432d127b45ac1912ff
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/texteditor/basehoverhandler.cpp')
-rw-r--r-- | src/plugins/texteditor/basehoverhandler.cpp | 38 |
1 files changed, 32 insertions, 6 deletions
diff --git a/src/plugins/texteditor/basehoverhandler.cpp b/src/plugins/texteditor/basehoverhandler.cpp index 56ad0c0ddb8..025d27b057b 100644 --- a/src/plugins/texteditor/basehoverhandler.cpp +++ b/src/plugins/texteditor/basehoverhandler.cpp @@ -26,6 +26,7 @@ #include "basehoverhandler.h" #include "texteditor.h" +#include <utils/qtcassert.h> #include <utils/tooltip/tooltip.h> namespace TextEditor { @@ -33,6 +34,11 @@ namespace TextEditor { BaseHoverHandler::~BaseHoverHandler() {} +bool BaseHoverHandler::isAsyncHandler() const +{ + return m_isAsyncHandler; +} + void BaseHoverHandler::showToolTip(TextEditorWidget *widget, const QPoint &point, bool decorate) { if (decorate) @@ -40,13 +46,18 @@ void BaseHoverHandler::showToolTip(TextEditorWidget *widget, const QPoint &point operateTooltip(widget, point); } -int BaseHoverHandler::checkToolTip(TextEditorWidget *widget, int pos) +void BaseHoverHandler::checkPriority(TextEditorWidget *widget, + int pos, + ReportPriority report) { widget->setContextHelpId(QString()); - process(widget, pos); + process(widget, pos, report); +} - return priority(); +void BaseHoverHandler::cancelAsyncCheck() +{ + QTC_CHECK(false && "BaseHoverHandler: Implement cancelCheck() in derived class!"); } int BaseHoverHandler::priority() const @@ -73,7 +84,7 @@ QString BaseHoverHandler::contextHelpId(TextEditorWidget *widget, int pos) // If the tooltip is visible and there is a help match, this match is used to update // the help id. Otherwise, let the identification process happen. if (!Utils::ToolTip::isVisible() || !lastHelpItemIdentified().isValid()) - process(widget, pos); + process(widget, pos, ReportPriority()); // TODO if (lastHelpItemIdentified().isValid()) return lastHelpItemIdentified().helpId(); @@ -100,13 +111,23 @@ const HelpItem &BaseHoverHandler::lastHelpItemIdentified() const return m_lastHelpItemIdentified; } -void BaseHoverHandler::process(TextEditorWidget *widget, int pos) +void BaseHoverHandler::process(TextEditorWidget *widget, int pos, ReportPriority report) { m_toolTip.clear(); m_priority = -1; m_lastHelpItemIdentified = HelpItem(); - identifyMatch(widget, pos); + if (m_isAsyncHandler) { + identifyMatchAsync(widget, pos, report); + } else { + identifyMatch(widget, pos); + report(priority()); + } +} + +void BaseHoverHandler::setIsAsyncHandler(bool isAsyncHandler) +{ + m_isAsyncHandler = isAsyncHandler; } void BaseHoverHandler::identifyMatch(TextEditorWidget *editorWidget, int pos) @@ -116,6 +137,11 @@ void BaseHoverHandler::identifyMatch(TextEditorWidget *editorWidget, int pos) setToolTip(tooltip); } +void BaseHoverHandler::identifyMatchAsync(TextEditorWidget *, int, BaseHoverHandler::ReportPriority) +{ + QTC_CHECK(false && "BaseHoverHandler: Implement identifyMatchAsync() in derived class!"); +} + void BaseHoverHandler::decorateToolTip() { if (Qt::mightBeRichText(toolTip())) |