diff options
author | Christian Stenger <christian.stenger@qt.io> | 2020-06-03 10:16:38 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2020-08-20 09:07:53 +0000 |
commit | 76c872f633b630f7a9b8fa60229579f5beaa1ff7 (patch) | |
tree | ac205ee368341ac3e99aca6cf8ff257680f22851 /src/plugins/glsleditor | |
parent | 52eea4c021f6e43506774ddd79d6083e1dd58f75 (diff) |
GlslEditor: Display tool tips for errors and warnings
Change-Id: Id5f6e555599e479a83cc565966653b9e44b85772
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/glsleditor')
-rw-r--r-- | src/plugins/glsleditor/glsleditor.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/plugins/glsleditor/glsleditor.cpp b/src/plugins/glsleditor/glsleditor.cpp index e4f0388ca0..1d290b2cf1 100644 --- a/src/plugins/glsleditor/glsleditor.cpp +++ b/src/plugins/glsleditor/glsleditor.cpp @@ -56,8 +56,10 @@ #include <texteditor/texteditorconstants.h> #include <texteditor/texteditorsettings.h> +#include <utils/algorithm.h> #include <utils/changeset.h> #include <utils/qtcassert.h> +#include <utils/tooltip/tooltip.h> #include <utils/uncommentselection.h> #include <QCoreApplication> @@ -168,6 +170,7 @@ public: private: void updateDocumentNow(); void setSelectedElements(); + void onTooltipRequested(const QPoint &point, int pos); QString wordUnderCursor() const; QTimer m_updateDocumentTimer; @@ -207,6 +210,8 @@ GlslEditorWidget::GlslEditorWidget() m_outlineCombo->setSizePolicy(policy); insertExtraToolBarWidget(TextEditorWidget::Left, m_outlineCombo); + + connect(this, &TextEditorWidget::tooltipRequested, this, &GlslEditorWidget::onTooltipRequested); } int GlslEditorWidget::editorRevision() const @@ -303,6 +308,26 @@ void GlslEditorWidget::updateDocumentNow() } } +void GlslEditorWidget::onTooltipRequested(const QPoint &point, int pos) +{ + QTC_ASSERT(m_glslDocument && m_glslDocument->engine(), return); + const int lineno = document()->findBlock(pos).blockNumber() + 1; + const QStringList messages + = Utils::transform<QStringList>( + Utils::filtered(m_glslDocument->engine()->diagnosticMessages(), + [lineno](const DiagnosticMessage &msg) { + return msg.line() == lineno; + }), + [](const DiagnosticMessage &msg) { + return msg.message(); + }); + + if (!messages.isEmpty()) + Utils::ToolTip::show(point, messages.join("<hr/>"), this); + else + Utils::ToolTip::hide(); +} + int languageVariant(const QString &type) { int variant = 0; |