Adhere to semantic background color with default branches

This fixes color mismatched when "use system colors" is checked

See https://marc.info/?l=lyx-users&m=172797086718347
This commit is contained in:
Juergen Spitzmueller 2024-10-05 14:15:19 +02:00
parent 2facf6eecc
commit 1f7e8d3ffe
2 changed files with 10 additions and 4 deletions

View File

@ -114,12 +114,14 @@ void Branch::setColors(string const & lmcol, string const & dmcol)
string lmcolor = lmcolor_; string lmcolor = lmcolor_;
string dmcolor = dmcolor_; string dmcolor = dmcolor_;
if (lmcolor == "none") if (lmcolor == "none")
lmcolor = lcolor.getX11HexName(Color_background); lmcolor = "background";
else if (lmcolor.size() != 7 || lmcolor[0] != '#') // if we have background color, keep semantic value, as system colors might vary
else if (lmcolor != "background" && (lmcolor.size() != 7 || lmcolor[0] != '#'))
lmcolor = lcolor.getX11HexName(lcolor.getFromLyXName(lmcolor)); lmcolor = lcolor.getX11HexName(lcolor.getFromLyXName(lmcolor));
if (dmcolor == "none") if (dmcolor == "none")
dmcolor = lcolor.getX11HexName(Color_background, true); dmcolor = "background";
else if (dmcolor.size() != 7 || dmcolor[0] != '#') // if we have background color, keep semantic value, as system colors might vary
else if (dmcolor != "background" && (dmcolor.size() != 7 || dmcolor[0] != '#'))
dmcolor = lcolor.getX11HexName(lcolor.getFromLyXName(dmcolor), true); dmcolor = lcolor.getX11HexName(lcolor.getFromLyXName(dmcolor), true);
// FIXME UNICODE // FIXME UNICODE

View File

@ -154,6 +154,10 @@ ColorCode InsetBranch::backgroundColor(PainterInfo const & pi) const
// FIXME UNICODE // FIXME UNICODE
string const branchcol = "branch" + branch_id + to_utf8(params_.branch); string const branchcol = "branch" + branch_id + to_utf8(params_.branch);
ColorCode c = lcolor.getFromLyXName(branchcol); ColorCode c = lcolor.getFromLyXName(branchcol);
// if we have background color, set to semantic value, as system colors
// might vary
if (lcolor.getX11HexName(c, (theApp() && theApp()->isInDarkMode())) == "background")
c = Color_background;
if (c == Color_none) if (c == Color_none)
c = Color_error; c = Color_error;
return c; return c;