summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-02-21 08:37:57 +0100
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-02-24 07:48:17 +0000
commit82cfe722cc957a2e05d4bcdde46a32dcd3506bd0 (patch)
treebe276e2e9e97708dc33b0d5d89f4ae3759b94694
parent6507dbe2fbbbfc9b085e8554ca330bfd7681ed89 (diff)
downloadqttools-82cfe722cc957a2e05d4bcdde46a32dcd3506bd0.tar.gz
Qt Designer: Adapt style sheet editor colors for dark mode
Add a struct for passing the colors to the CSS highlighter and populate it in StyleSheetEditor looking at the widget palette. Fixes: QTCREATORBUG-27087 Change-Id: I1be7616e0e1c3d3898de169fb66c7203c7257523 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> (cherry picked from commit b1b5bc57858a97aa2a4afc6d9b5f9400b0765f50) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/designer/src/lib/shared/csshighlighter.cpp19
-rw-r--r--src/designer/src/lib/shared/csshighlighter_p.h17
-rw-r--r--src/designer/src/lib/shared/stylesheeteditor.cpp18
3 files changed, 43 insertions, 11 deletions
diff --git a/src/designer/src/lib/shared/csshighlighter.cpp b/src/designer/src/lib/shared/csshighlighter.cpp
index 115b77c17..00d6ab9f2 100644
--- a/src/designer/src/lib/shared/csshighlighter.cpp
+++ b/src/designer/src/lib/shared/csshighlighter.cpp
@@ -32,8 +32,9 @@ QT_BEGIN_NAMESPACE
namespace qdesigner_internal {
-CssHighlighter::CssHighlighter(QTextDocument *document)
-: QSyntaxHighlighter(document)
+CssHighlighter::CssHighlighter(const CssHighlightColors &colors,
+ QTextDocument *document)
+ : QSyntaxHighlighter(document), m_colors(colors)
{
}
@@ -143,26 +144,26 @@ void CssHighlighter::highlight(const QString &text, int start, int length, int s
switch (state) {
case Selector:
- setFormat(start, length, Qt::darkRed);
+ setFormat(start, length, m_colors.selector);
break;
case Property:
- setFormat(start, length, Qt::blue);
+ setFormat(start, length, m_colors.property);
break;
case Value:
- setFormat(start, length, Qt::black);
+ setFormat(start, length, m_colors.value);
break;
case Pseudo1:
- setFormat(start, length, Qt::darkRed);
+ setFormat(start, length, m_colors.pseudo1);
break;
case Pseudo2:
- setFormat(start, length, Qt::darkRed);
+ setFormat(start, length, m_colors.pseudo2);
break;
case Quote:
- setFormat(start, length, Qt::darkMagenta);
+ setFormat(start, length, m_colors.quote);
break;
case Comment:
case MaybeCommentEnd:
- format.setForeground(Qt::darkGreen);
+ format.setForeground(m_colors.comment);
setFormat(start, length, format);
break;
default:
diff --git a/src/designer/src/lib/shared/csshighlighter_p.h b/src/designer/src/lib/shared/csshighlighter_p.h
index 8af8cd337..0479ba75d 100644
--- a/src/designer/src/lib/shared/csshighlighter_p.h
+++ b/src/designer/src/lib/shared/csshighlighter_p.h
@@ -41,17 +41,30 @@
#define CSSHIGHLIGHTER_H
#include <QtGui/qsyntaxhighlighter.h>
+#include <QtGui/qcolor.h>
#include "shared_global_p.h"
QT_BEGIN_NAMESPACE
namespace qdesigner_internal {
+struct CssHighlightColors
+{
+ QColor selector;
+ QColor property;
+ QColor value;
+ QColor pseudo1;
+ QColor pseudo2;
+ QColor quote;
+ QColor comment;
+};
+
class QDESIGNER_SHARED_EXPORT CssHighlighter : public QSyntaxHighlighter
{
Q_OBJECT
public:
- explicit CssHighlighter(QTextDocument *document);
+ explicit CssHighlighter(const CssHighlightColors &colors,
+ QTextDocument *document);
protected:
void highlightBlock(const QString&) override;
@@ -60,6 +73,8 @@ protected:
private:
enum State { Selector, Property, Value, Pseudo, Pseudo1, Pseudo2, Quote,
MaybeComment, Comment, MaybeCommentEnd };
+
+ const CssHighlightColors m_colors;
};
} // namespace qdesigner_internal
diff --git a/src/designer/src/lib/shared/stylesheeteditor.cpp b/src/designer/src/lib/shared/stylesheeteditor.cpp
index 2956d1abc..48d38e6a7 100644
--- a/src/designer/src/lib/shared/stylesheeteditor.cpp
+++ b/src/designer/src/lib/shared/stylesheeteditor.cpp
@@ -69,9 +69,25 @@ namespace qdesigner_internal {
StyleSheetEditor::StyleSheetEditor(QWidget *parent)
: QTextEdit(parent)
{
+ enum : int { DarkThreshold = 200 }; // Observed 239 on KDE/Dark
+
setTabStopDistance(fontMetrics().horizontalAdvance(QLatin1Char(' ')) * 4);
setAcceptRichText(false);
- new CssHighlighter(document());
+
+ const QColor textColor = palette().color(QPalette::WindowText);
+ const bool darkMode = textColor.red() > DarkThreshold
+ && textColor.green() > DarkThreshold
+ && textColor.blue() > DarkThreshold;
+
+ CssHighlightColors colors;
+ colors.selector = darkMode ? QColor(Qt::red).lighter() : QColor(Qt::darkRed);
+ const QColor blue(Qt::blue);
+ colors.property = darkMode ? blue.lighter() : blue;
+ colors.pseudo1 = colors.pseudo2 = colors.value = textColor;
+ colors.quote = darkMode ? Qt::magenta : Qt::darkMagenta;
+ colors.comment = darkMode ? Qt::green : Qt::darkGreen;
+
+ new CssHighlighter(colors, document());
}
// --- StyleSheetEditorDialog