aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/glsleditor
diff options
context:
space:
mode:
authorChristian Stenger <christian.stenger@qt.io>2020-06-03 10:16:38 +0200
committerChristian Stenger <christian.stenger@qt.io>2020-08-20 09:07:53 +0000
commit76c872f633b630f7a9b8fa60229579f5beaa1ff7 (patch)
treeac205ee368341ac3e99aca6cf8ff257680f22851 /src/plugins/glsleditor
parent52eea4c021f6e43506774ddd79d6083e1dd58f75 (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.cpp25
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;