[LyX/master] Adapt quote color to brightened text color (part of #13218)
Juergen Spitzmueller
spitz at lyx.org
Thu May 21 04:48:09 UTC 2026
commit 37df97c9d3c9fb7c70736a9017f9cae3cf3a6f6e
Author: Juergen Spitzmueller <spitz at lyx.org>
Date: Thu May 21 06:47:15 2026 +0200
Adapt quote color to brightened text color (part of #13218)
---
src/frontends/qt/GuiPainter.cpp | 7 +++----
src/insets/InsetQuotes.cpp | 22 ++++++++++++++++++++--
2 files changed, 23 insertions(+), 6 deletions(-)
diff --git a/src/frontends/qt/GuiPainter.cpp b/src/frontends/qt/GuiPainter.cpp
index 04e9fb9c9e..00ce3205c3 100644
--- a/src/frontends/qt/GuiPainter.cpp
+++ b/src/frontends/qt/GuiPainter.cpp
@@ -330,13 +330,12 @@ void GuiPainter::text(int x, int y, docstring const & s,
textDecoration(f, x, y, textwidth);
- Color const rc = f.realColor(invert);
- QColor penColor = computeColor(rc);
+ Color rc = f.realColor(invert);
if (invert && rc == f.color())
// We are in dark mode and have a dark text color.
// Brighten that for workarea display (#13218)
- penColor = penColor.lighter(170);
- setQPainterPen(penColor);
+ rc.mergeColor = Color_foreground;
+ setQPainterPen(computeColor(rc));
if (dir != Auto) {
auto ptl = fm.getTextLayout(s, dir == RtL, wordspacing);
QTextLine const & tline = ptl->lineForTextPosition(0);
diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp
index a68a7598f8..357987025f 100644
--- a/src/insets/InsetQuotes.cpp
+++ b/src/insets/InsetQuotes.cpp
@@ -15,6 +15,7 @@
#include "Buffer.h"
#include "BufferParams.h"
+#include "ColorSet.h"
#include "Cursor.h"
#include "Dimension.h"
#include "Encoding.h"
@@ -30,6 +31,7 @@
#include "texstream.h"
#include "xml.h"
+#include "frontends/Application.h"
#include "frontends/FontMetrics.h"
#include "frontends/Painter.h"
@@ -702,8 +704,24 @@ void InsetQuotes::draw(PainterInfo & pi, int x, int y) const
FontInfo font = pi.base.font;
if (style_ == QuoteStyle::Dynamic)
font.setPaintColor(Color_special);
- else
- font.setPaintColor(pi.textColor(font.realColor()));
+ else {
+ bool invert = false;
+ if (theApp() && theApp()->isInDarkMode()) {
+ if (font.color() == Color_none
+ && theApp()->isLightColor(rgbFromHexName(lcolor.getX11HexName(pi.background_color, true))))
+ invert = true;
+ else if (pi.background_color == Color_background
+ && font.color() != Color_none
+ && !theApp()->isLightColor(rgbFromHexName(lcolor.getX11HexName(font.color()))))
+ invert = true;
+ }
+ Color rc = font.realColor(invert);
+ if (invert && rc == font.color())
+ // We are in dark mode and have a dark text color.
+ // Brighten that for workarea display (#13218)
+ rc.mergeColor = Color_foreground;
+ font.setPaintColor(pi.textColor(rc));
+ }
pi.pain.text(x, y, displayString(), font);
}
More information about the lyx-cvs
mailing list