[LyX/master] Improve some inset colors in special background contexts (#13320)

Juergen Spitzmueller <[email protected]> Thu, 04 Jun 2026 14:23:37 +0000
Newsgroups gmane.editors.lyx.cvs
Message-ID <[email protected]>
commit 9ae654e7c71102f3a5e5dd05e3609d9f2304d4f8
Author: Juergen Spitzmueller <[email protected]>
Date:   Thu Jun 4 16:22:48 2026 +0200

    Improve some inset colors in special background contexts (#13320)
---
 src/Color.cpp                   |  8 ++--
 src/insets/Inset.cpp            | 54 +++++++++++++++++++++++++++
 src/insets/Inset.h              |  4 ++
 src/insets/InsetNewline.cpp     | 16 ++++----
 src/insets/InsetNewline.h       |  2 +-
 src/insets/InsetQuotes.cpp      | 16 +-------
 src/insets/InsetSpace.cpp       | 83 +++++++++++++++++++++--------------------
 src/insets/InsetSpecialChar.cpp |  8 ++--
 src/insets/InsetTextbreak.cpp   | 24 ++++++------
 src/insets/InsetTextbreak.h     |  2 +-
 src/insets/InsetVSpace.cpp      | 13 ++++---
 11 files changed, 140 insertions(+), 90 deletions(-)

diff --git a/src/Color.cpp b/src/Color.cpp
index f277de10b4..4ba9a69d46 100644
--- a/src/Color.cpp
+++ b/src/Color.cpp
@@ -312,7 +312,7 @@ ColorSet::ColorSet()
 	{ Color_nonunique_inlinecompletion, N_("inline completion (non-unique)"),
 		"nonuniqueinlinecompletion", grey80, grey60, "nonuniqueinlinecompletion" },
 	{ Color_notelabel, N_("note label"), "note", yellow, "#ffff6200", "note" },
-	{ Color_notebg, N_("note background"), "notebg", yellow, "#ff5b5903", "notebg" },
+	{ Color_notebg, N_("note background"), "notebg", yellow, yellow, "notebg" },
 	{ Color_commentlabel, N_("comment label"), "comment", magenta, olive, "comment" },
 	{ Color_commentbg, N_("comment background"), "commentbg", Linen, black, "commentbg" },
 	{ Color_greyedoutlabel, N_("greyedout inset label"), "greyedout", "#ffff0080", "#ffff0080", "greyedout" },
@@ -358,9 +358,9 @@ ColorSet::ColorSet()
 	{ Color_insetframe, N_("inset frame"), "insetframe", IndianRed, IndianRed, "insetframe" },
 	{ Color_insetlabel, N_("inset label"), "insetlabel", black, black, "insetlabel" },
 	{ Color_error, N_("LaTeX error"), "error", red, DarkRed, "error" },
-	{ Color_eolmarker, N_("end-of-line marker"), "eolmarker", Brown, Brown, "eolmarker" },
-	{ Color_added_space, N_("added space markers"), "added_space", Brown, Brown, "added_space" },
-	{ Color_appendix, N_("appendix marker"), "appendix", Brown, Brown, "appendix" },
+	{ Color_eolmarker, N_("end-of-line marker"), "eolmarker", Brown, "#ffffbfbf", "eolmarker" },
+	{ Color_added_space, N_("added space markers"), "added_space", Brown, "#ffffbfbf", "added_space" },
+	{ Color_appendix, N_("appendix marker"), "appendix", Brown, "#ffffbfbf", "appendix" },
 	{ Color_changebar, N_("change bar"), "changebar", blue, "#ff86a4ff", "changebar" },
 	{ Color_deletedtext_output, N_("changes - deleted text (exported output)"), "deletedtext", "#ffff0000", "#ffff0000", "deletedtext" },
 	{ Color_addedtext_output, N_("changes - added text (exported output)"), "addedtext", "#ff0000ff", "#ff0000ff", "addedtext" },
diff --git a/src/insets/Inset.cpp b/src/insets/Inset.cpp
index b208d14c7f..806c772da6 100644
--- a/src/insets/Inset.cpp
+++ b/src/insets/Inset.cpp
@@ -20,6 +20,7 @@
 #include "BufferList.h"
 #include "BufferParams.h"
 #include "BufferView.h"
+#include "ColorSet.h"
 #include "CoordCache.h"
 #include "Cursor.h"
 #include "Dimension.h"
@@ -302,6 +303,59 @@ FontInfo Inset::getLabelfont() const
 }
 
 
+Color Inset::getModeDependentColor(PainterInfo & pi) const
+{
+	FontInfo font = pi.base.font;
+	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;
+	return rc;
+}
+
+
+Color Inset::getModeDependentColor(ColorCode const fgc, ColorCode const bgc) const
+{
+	bool invert = false;
+	bool darken = false;
+	if (theApp() && theApp()->isInDarkMode()) {
+		if (fgc == Color_none
+		    && theApp()->isLightColor(rgbFromHexName(lcolor.getX11HexName(bgc, true))))
+			invert = true;
+		else if (bgc == Color_background
+			 && fgc != Color_none
+			 && !theApp()->isLightColor(rgbFromHexName(lcolor.getX11HexName(fgc, true))))
+			invert = true;
+		else if (bgc != Color_background
+			 && fgc != Color_none
+			 && theApp()->isLightColor(rgbFromHexName(lcolor.getX11HexName(fgc, true)))
+			 && theApp()->isLightColor(rgbFromHexName(lcolor.getX11HexName(bgc, true))))
+			darken = true;
+	}
+	Color res = fgc;
+	if (invert)
+		// We are in dark mode and have a dark text color.
+		// Brighten that for workarea display (#13218)
+		res.mergeColor = Color_foreground;
+	else if (darken)
+		// We are in dark mode and have a dark text color.
+		// Brighten that for workarea display (#13218)
+		res.mergeColor = Color_background;
+	return res;
+}
+
+
 docstring Inset::toolTip(BufferView const &, int, int) const
 {
 	return docstring();
diff --git a/src/insets/Inset.h b/src/insets/Inset.h
index 9b336b147b..206b2c1b6c 100644
--- a/src/insets/Inset.h
+++ b/src/insets/Inset.h
@@ -634,6 +634,10 @@ public:
 	virtual ColorCode backgroundColor(PainterInfo const &) const;
 	///
 	virtual ColorCode labelColor() const;
+	///
+	Color getModeDependentColor(PainterInfo & pi) const;
+	///
+	Color getModeDependentColor(ColorCode const fgc, ColorCode const bgc) const;
 
 	/// Determine the action of backspace and delete: do we select instead of
 	/// deleting if not already selected?
diff --git a/src/insets/InsetNewline.cpp b/src/insets/InsetNewline.cpp
index 4e24736965..d12eafa07f 100644
--- a/src/insets/InsetNewline.cpp
+++ b/src/insets/InsetNewline.cpp
@@ -136,14 +136,14 @@ bool InsetNewline::getStatus(Cursor & cur, FuncRequest const & cmd,
 }
 
 
-ColorCode InsetNewline::ColorName() const
+Color InsetNewline::ColorName(ColorCode const bgc) const
 {
 	switch (params_.kind) {
 		case InsetNewlineParams::NEWLINE:
-			return Color_eolmarker;
+			return getModeDependentColor(Color_eolmarker, bgc);
 			break;
 		case InsetNewlineParams::LINEBREAK:
-			return Color_pagebreak;
+			return getModeDependentColor(Color_pagebreak, bgc);
 			break;
 	}
 	// not really useful, but to avoids gcc complaints
@@ -195,7 +195,7 @@ void InsetNewline::xhtml(XMLStream & xs, OutputParams const &) const
 void InsetNewline::draw(PainterInfo & pi, int x, int y) const
 {
 	FontInfo font;
-	font.setColor(ColorName());
+	font.setPaintColor(ColorName(pi.background_color));
 
 	frontend::FontMetrics const & fm = theFontMetrics(pi.base.font);
 	int const wid = fm.width('n');
@@ -218,7 +218,7 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const
 		xp[2] = int(x + wid * 0.625);
 	}
 
-	pi.pain.lines(xp, yp, 3, ColorName());
+	pi.pain.lines(xp, yp, 3, ColorName(pi.background_color));
 
 	yp[0] = int(y - 0.500 * asc * 0.75);
 	yp[1] = int(y - 0.500 * asc * 0.75);
@@ -234,7 +234,7 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const
 		xp[2] = int(x);
 	}
 
-	pi.pain.lines(xp, yp, 3, ColorName());
+	pi.pain.lines(xp, yp, 3, ColorName(pi.background_color));
 
 	if (params_.kind == InsetNewlineParams::LINEBREAK) {
 
@@ -249,7 +249,7 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const
 			xp[1] = int(x - wid);
 			xp[2] = int(x - wid);
 		}
-		pi.pain.lines(xp, yp, 3, ColorName());
+		pi.pain.lines(xp, yp, 3, ColorName(pi.background_color));
 
 		yp[0] = int(y - 0.875 * asc * 0.75);
 		yp[1] = int(y - 0.500 * asc * 0.75);
@@ -264,7 +264,7 @@ void InsetNewline::draw(PainterInfo & pi, int x, int y) const
 			xp[1] = int(x - wid);
 			xp[2] = int(x - wid * 0.625);
 		}
-		pi.pain.lines(xp, yp, 3, ColorName());
+		pi.pain.lines(xp, yp, 3, ColorName(pi.background_color));
 	}
 }
 
diff --git a/src/insets/InsetNewline.h b/src/insets/InsetNewline.h
index e4f70b4e67..b5c6803115 100644
--- a/src/insets/InsetNewline.h
+++ b/src/insets/InsetNewline.h
@@ -76,7 +76,7 @@ private:
 	/// a line separator)?
 	bool isSpace() const override { return true; }
 	///
-	ColorCode ColorName() const;
+	Color ColorName(ColorCode const bgc) const;
 	///
 	std::string contextMenuName() const override;
 	///
diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp
index 357987025f..55a9802199 100644
--- a/src/insets/InsetQuotes.cpp
+++ b/src/insets/InsetQuotes.cpp
@@ -705,21 +705,7 @@ void InsetQuotes::draw(PainterInfo & pi, int x, int y) const
 	if (style_ == QuoteStyle::Dynamic)
 		font.setPaintColor(Color_special);
 	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;
+		Color rc = getModeDependentColor(pi);
 		font.setPaintColor(pi.textColor(rc));
 	}
 	pi.pain.text(x, y, displayString(), font);
diff --git a/src/insets/InsetSpace.cpp b/src/insets/InsetSpace.cpp
index 5c8a5d545b..289455fea0 100644
--- a/src/insets/InsetSpace.cpp
+++ b/src/insets/InsetSpace.cpp
@@ -317,59 +317,62 @@ void InsetSpace::draw(PainterInfo & pi, int x, int y) const
 		int const xml = xm - xoffset;
 		int const xmr = xm + xoffset;
 
+		Color added = getModeDependentColor(Color_added_space, pi.background_color);
+		Color latex = getModeDependentColor(Color_latex, pi.background_color);
+		Color special = getModeDependentColor(Color_special, pi.background_color);
 		if (params_.kind == InsetSpaceParams::HFILL) {
-			pi.pain.line(x0, y1, x0, y0, Color_added_space);
-			pi.pain.line(x0, y2, x1, y2, Color_added_space,
+			pi.pain.line(x0, y1, x0, y0, added);
+			pi.pain.line(x0, y2, x1, y2, added,
 				frontend::Painter::line_onoffdash);
-			pi.pain.line(x1, y1, x1, y0, Color_added_space);
+			pi.pain.line(x1, y1, x1, y0, added);
 		} else if (params_.kind == InsetSpaceParams::HFILL_PROTECTED) {
-			pi.pain.line(x0, y1, x0, y0, Color_latex);
-			pi.pain.line(x0, y2, x1, y2, Color_latex,
+			pi.pain.line(x0, y1, x0, y0, latex);
+			pi.pain.line(x0, y2, x1, y2, latex,
 				frontend::Painter::line_onoffdash);
-			pi.pain.line(x1, y1, x1, y0, Color_latex);
+			pi.pain.line(x1, y1, x1, y0, latex);
 		} else if (params_.kind == InsetSpaceParams::DOTFILL) {
-			pi.pain.line(x0, y1, x0, y0, Color_special);
-			pi.pain.line(x0, y0, x1, y0, Color_special,
+			pi.pain.line(x0, y1, x0, y0, special);
+			pi.pain.line(x0, y0, x1, y0, special,
 				frontend::Painter::line_onoffdash);
-			pi.pain.line(x1, y1, x1, y0, Color_special);
+			pi.pain.line(x1, y1, x1, y0, special);
 		} else if (params_.kind == InsetSpaceParams::HRULEFILL) {
-			pi.pain.line(x0, y1, x0, y0, Color_special);
-			pi.pain.line(x0, y0, x1, y0, Color_special);
-			pi.pain.line(x1, y1, x1, y0, Color_special);
+			pi.pain.line(x0, y1, x0, y0, special);
+			pi.pain.line(x0, y0, x1, y0, special);
+			pi.pain.line(x1, y1, x1, y0, special);
 		} else if (params_.kind == InsetSpaceParams::LEFTARROWFILL) {
-			pi.pain.line(x2, y1 + 1 , x0 + 1, y2, Color_special);
-			pi.pain.line(x0 + 1, y2 + 1 , x2, y0, Color_special);
-			pi.pain.line(x0, y2 , x1, y2, Color_special);
+			pi.pain.line(x2, y1 + 1 , x0 + 1, y2, special);
+			pi.pain.line(x0 + 1, y2 + 1 , x2, y0, special);
+			pi.pain.line(x0, y2 , x1, y2, special);
 		} else if (params_.kind == InsetSpaceParams::RIGHTARROWFILL) {
-			pi.pain.line(x3 + 1, y1 + 1 , x1, y2, Color_special);
-			pi.pain.line(x1, y2 + 1 , x3 + 1, y0, Color_special);
-			pi.pain.line(x0, y2 , x1, y2, Color_special);
+			pi.pain.line(x3 + 1, y1 + 1 , x1, y2, special);
+			pi.pain.line(x1, y2 + 1 , x3 + 1, y0, special);
+			pi.pain.line(x0, y2 , x1, y2, special);
 		} else if (params_.kind == InsetSpaceParams::UPBRACEFILL) {
-			pi.pain.line(x0 + 1, y1 + 1 , x2, y2, Color_special);
-			pi.pain.line(x2, y2 , xml, y2, Color_special);
-			pi.pain.line(xml + 1, y2 + 1 , xm, y0, Color_special);
-			pi.pain.line(xm + 1, y0 , xmr, y2 + 1, Color_special);
-			pi.pain.line(xmr, y2 , x3, y2, Color_special);
-			pi.pain.line(x3 + 1, y2 , x1, y1 + 1, Color_special);
+			pi.pain.line(x0 + 1, y1 + 1 , x2, y2, special);
+			pi.pain.line(x2, y2 , xml, y2, special);
+			pi.pain.line(xml + 1, y2 + 1 , xm, y0, special);
+			pi.pain.line(xm + 1, y0 , xmr, y2 + 1, special);
+			pi.pain.line(xmr, y2 , x3, y2, special);
+			pi.pain.line(x3 + 1, y2 , x1, y1 + 1, special);
 		} else if (params_.kind == InsetSpaceParams::DOWNBRACEFILL) {
-			pi.pain.line(x0 + 1, y0 , x2, y2 + 1, Color_special);
-			pi.pain.line(x2, y2 , xml, y2, Color_special);
-			pi.pain.line(xml + 1, y2 , xm, y1 + 1, Color_special);
-			pi.pain.line(xm + 1, y1 + 1 , xmr, y2, Color_special);
-			pi.pain.line(xmr, y2 , x3, y2, Color_special);
-			pi.pain.line(x3 + 1, y2 + 1 , x1, y0, Color_special);
+			pi.pain.line(x0 + 1, y0 , x2, y2 + 1, special);
+			pi.pain.line(x2, y2 , xml, y2, special);
+			pi.pain.line(xml + 1, y2 , xm, y1 + 1, special);
+			pi.pain.line(xm + 1, y1 + 1 , xmr, y2, special);
+			pi.pain.line(xmr, y2 , x3, y2, special);
+			pi.pain.line(x3 + 1, y2 + 1 , x1, y0, special);
 		} else if (params_.kind == InsetSpaceParams::CUSTOM) {
-			pi.pain.line(x0, y1 + 1 , x2 + 1, y2, Color_special);
-			pi.pain.line(x2 + 1, y2 + 1 , x0, y0, Color_special);
-			pi.pain.line(x1 + 1, y1 + 1 , x3, y2, Color_special);
-			pi.pain.line(x3, y2 + 1 , x1 + 1, y0, Color_special);
-			pi.pain.line(x2, y2 , x3, y2, Color_special);
+			pi.pain.line(x0, y1 + 1 , x2 + 1, y2, special);
+			pi.pain.line(x2 + 1, y2 + 1 , x0, y0, special);
+			pi.pain.line(x1 + 1, y1 + 1 , x3, y2, special);
+			pi.pain.line(x3, y2 + 1 , x1 + 1, y0, special);
+			pi.pain.line(x2, y2 , x3, y2, special);
 		} else if (params_.kind == InsetSpaceParams::CUSTOM_PROTECTED) {
-			pi.pain.line(x0, y1 + 1 , x2 + 1, y2, Color_latex);
-			pi.pain.line(x2 + 1, y2 + 1 , x0, y0, Color_latex);
-			pi.pain.line(x1 + 1, y1 + 1 , x3, y2, Color_latex);
-			pi.pain.line(x3, y2 + 1 , x1 + 1, y0, Color_latex);
-			pi.pain.line(x2, y2 , x3, y2, Color_latex);
+			pi.pain.line(x0, y1 + 1 , x2 + 1, y2, latex);
+			pi.pain.line(x2 + 1, y2 + 1 , x0, y0, latex);
+			pi.pain.line(x1 + 1, y1 + 1 , x3, y2, latex);
+			pi.pain.line(x3, y2 + 1 , x1 + 1, y0, latex);
+			pi.pain.line(x2, y2 , x3, y2, latex);
 		}
 		return;
 	}
diff --git a/src/insets/InsetSpecialChar.cpp b/src/insets/InsetSpecialChar.cpp
index afb9e4d681..95594c11bf 100644
--- a/src/insets/InsetSpecialChar.cpp
+++ b/src/insets/InsetSpecialChar.cpp
@@ -198,11 +198,13 @@ void InsetSpecialChar::draw(PainterInfo & pi, int x, int y) const
 	FontInfo font = pi.base.font;
 
 	if (unknown_) {
-		font.setColor(Color_error);
+		font.setPaintColor(getModeDependentColor(Color_error, pi.background_color));
 		pi.pain.text(x, y, from_ascii("??"), font);
 		return;
 	}
 
+	Color special = getModeDependentColor(Color_special, pi.background_color);
+
 	if (kind_ == "allowbreak") {
 		// A small vertical line
 		int const asc = theFontMetrics(pi.base.font).xHeight();
@@ -211,7 +213,7 @@ void InsetSpecialChar::draw(PainterInfo & pi, int x, int y) const
 		int const x1 = x; // x - 1; // similar to LibreOffice?
 		int const y0 = y + desc;
 		int const y1 = y - asc / 3;
-		pi.pain.line(x0, y1, x1, y0, Color_special);
+		pi.pain.line(x0, y1, x1, y0, special);
 		return;
 	}
 	if (kind_ == "LyX" || kind_ == "TeX" || kind_ == "LaTeX" || kind_ == "LaTeX2e") {
@@ -226,7 +228,7 @@ void InsetSpecialChar::draw(PainterInfo & pi, int x, int y) const
 		// ▹ U+25B9 WHITE RIGHT-POINTING SMALL TRIANGLE
 		// ◃ U+25C3 WHITE LEFT-POINTING SMALL TRIANGLE
 		char_type const c = pi.ltr_pos ? 0x25B9 : 0x25C3;
-		font.setColor(Color_special);
+		font.setPaintColor(special);
 		pi.pain.text(x, y, c, font);
 		return;
 	}
diff --git a/src/insets/InsetTextbreak.cpp b/src/insets/InsetTextbreak.cpp
index 9dd4c8d08d..dd69fb0816 100644
--- a/src/insets/InsetTextbreak.cpp
+++ b/src/insets/InsetTextbreak.cpp
@@ -131,7 +131,7 @@ void InsetTextbreak::draw(PainterInfo & pi, int x, int y) const
 	if (params_.kind == InsetTextbreakParams::NOPAGEBREAK) {
 
 	        FontInfo font;
-	        font.setColor(ColorName());
+	        font.setPaintColor(ColorName(pi.background_color));
 
 	        frontend::FontMetrics const & fm = theFontMetrics(pi.base.font);
 	        int const wid = 3 * fm.width('n');
@@ -147,12 +147,12 @@ void InsetTextbreak::draw(PainterInfo & pi, int x, int y) const
 		xp[0] = int(x + wid * 0.25);
 		xp[1] = int(x + wid * 0.4); 
 		xp[2] = int(x + wid * 0.25);
-		pi.pain.lines(xp, yp, 3, ColorName());
+		pi.pain.lines(xp, yp, 3, ColorName(pi.background_color));
 
 		yp[0] = yp[1] = int(y - 0.500 * asc * 0.75);
 		xp[0] = int(x + wid * 0.03);
 		xp[1] = int(x + wid * 0.4); 
-		pi.pain.lines(xp, yp, 2, ColorName());
+		pi.pain.lines(xp, yp, 2, ColorName(pi.background_color));
 
 		//right side arrow
 		yp[0] = int(y - 0.875 * asc * 0.75);
@@ -161,25 +161,25 @@ void InsetTextbreak::draw(PainterInfo & pi, int x, int y) const
 		xp[0] = int(x + wid * 0.75);
 		xp[1] = int(x + wid * 0.6); 
 		xp[2] = int(x + wid * 0.75);
-		pi.pain.lines(xp, yp, 3, ColorName());
+		pi.pain.lines(xp, yp, 3, ColorName(pi.background_color));
 
 		yp[0] = yp[1] = int(y - 0.500 * asc * 0.75);
 		xp[0] = int(x + wid * 0.97);
 		xp[1] = int(x + wid * 0.6); 
-		pi.pain.lines(xp, yp, 2, ColorName());
+		pi.pain.lines(xp, yp, 2, ColorName(pi.background_color));
 
 		//mid-rule
 		xp[0] = xp[1] = int(x + wid * 0.5);
 		yp[0] = int(y - 0.875 * asc * 0.75);
 		yp[1] = int(y - 0.125 * asc * 0.75);
-		pi.pain.lines(xp, yp, 2, ColorName());
+		pi.pain.lines(xp, yp, 2, ColorName(pi.background_color));
 		return;
 	}
 
 	using frontend::Painter;
 
 	FontInfo font;
-	font.setColor(ColorName());
+	font.setPaintColor(ColorName(pi.background_color));
 	font.decSize();
 
 	Dimension const dim = dimension(*pi.base.bv);
@@ -196,9 +196,9 @@ void InsetTextbreak::draw(PainterInfo & pi, int x, int y) const
 		Color_none, Color_none);
 
 	pi.pain.line(x, y, text_start, y,
-		   ColorName(), Painter::line_onoffdash);
+		   ColorName(pi.background_color), Painter::line_onoffdash);
 	pi.pain.line(text_end, y, int(x + dim.wid), y,
-		   ColorName(), Painter::line_onoffdash);
+		   ColorName(pi.background_color), Painter::line_onoffdash);
 }
 
 
@@ -264,17 +264,17 @@ docstring InsetTextbreak::insetLabel() const
 }
 
 
-ColorCode InsetTextbreak::ColorName() const
+Color InsetTextbreak::ColorName(ColorCode const bgc) const
 {
 	switch (params_.kind) {
 		case InsetTextbreakParams::PAGEBREAK:
 		case InsetTextbreakParams::NOPAGEBREAK:
-			return Color_pagebreak;
+			return getModeDependentColor(Color_pagebreak, bgc);
 		case InsetTextbreakParams::NEWPAGE:
 		case InsetTextbreakParams::CLEARPAGE:
 		case InsetTextbreakParams::CLEARDOUBLEPAGE:
 		case InsetTextbreakParams::CONTEXTUAL:
-			return Color_newpage;
+			return getModeDependentColor(Color_newpage, bgc);
 	}
 	// not really useful, but to avoids gcc complaints
 	return Color_newpage;
diff --git a/src/insets/InsetTextbreak.h b/src/insets/InsetTextbreak.h
index 33e211bf9e..bba66fef87 100644
--- a/src/insets/InsetTextbreak.h
+++ b/src/insets/InsetTextbreak.h
@@ -85,7 +85,7 @@ private:
 	///
 	docstring insetLabel() const;
 	///
-	ColorCode ColorName() const;
+	Color ColorName(ColorCode const bgc) const;
 	///
 	std::string contextMenuName() const override;
 	///
diff --git a/src/insets/InsetVSpace.cpp b/src/insets/InsetVSpace.cpp
index de634fca22..1c015d122b 100644
--- a/src/insets/InsetVSpace.cpp
+++ b/src/insets/InsetVSpace.cpp
@@ -185,7 +185,8 @@ void InsetVSpace::draw(PainterInfo & pi, int x, int y) const
 	int d = 0;
 
 	FontInfo font;
-	font.setColor(Color_added_space);
+	Color rc = getModeDependentColor(Color_added_space, pi.background_color);
+	font.setPaintColor(rc);
 	font.decSize();
 	font.decSize();
 	docstring const lab = label();
@@ -196,15 +197,15 @@ void InsetVSpace::draw(PainterInfo & pi, int x, int y) const
 			 lab, font, Color_none, Color_none);
 
 	// top arrow
-	pi.pain.line(x, ty1, midx, ty2, Color_added_space);
-	pi.pain.line(midx, ty2, rightx, ty1, Color_added_space);
+	pi.pain.line(x, ty1, midx, ty2, rc);
+	pi.pain.line(midx, ty2, rightx, ty1, rc);
 
 	// bottom arrow
-	pi.pain.line(x, by1, midx, by2, Color_added_space);
-	pi.pain.line(midx, by2, rightx, by1, Color_added_space);
+	pi.pain.line(x, by1, midx, by2, rc);
+	pi.pain.line(midx, by2, rightx, by1, rc);
 
 	// joining line
-	pi.pain.line(midx, ty2, midx, by2, Color_added_space);
+	pi.pain.line(midx, ty2, midx, by2, rc);
 }
 
 
-- 
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs