X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBranchList.cpp;h=fc61065a4b767bf34099498466883204a2e55245;hb=0e4ca9aa88eb7b9351bb563dcd2df59c15744aa5;hp=aa8551ed5d663820380aa143223d55636b10c4f5;hpb=8cf6b347382622164d8f4e2ca148d11bf56e19cb;p=lyx.git diff --git a/src/BranchList.cpp b/src/BranchList.cpp index aa8551ed5d..fc61065a4b 100644 --- a/src/BranchList.cpp +++ b/src/BranchList.cpp @@ -17,6 +17,7 @@ #include "frontends/Application.h" +#include "support/convert.h" #include "support/lstrings.h" #include @@ -26,13 +27,6 @@ using namespace std; namespace lyx { -Branch::Branch() - : selected_(false), filenameSuffix_(false) -{ - color_ = "background"; -} - - docstring const & Branch::branch() const { return branch_; @@ -74,23 +68,58 @@ void Branch::setFileNameSuffix(bool b) string const & Branch::color() const { - return color_; + return (theApp() && theApp()->isInDarkMode()) + ? dmcolor_ : lmcolor_; } -void Branch::setColor(string const & str) +string const & Branch::lightModeColor() const { - color_ = str; + return lmcolor_; +} + + +string const & Branch::darkModeColor() const +{ + return dmcolor_; +} + + +void Branch::setColor(string const & col) +{ + if (theApp() && theApp()->isInDarkMode()) + setColors(string(), col); + else + setColors(col); +} + + +void Branch::setColors(string const & lmcol, string const & dmcol) +{ + if (lmcol.empty() && lmcolor_ == "background" && support::prefixIs(dmcol, "#")) + lmcolor_ = X11hexname(inverseRGBColor(rgbFromHexName(dmcol))); + else if (!lmcol.empty()) + lmcolor_ = lmcol; + if (dmcol.empty() && dmcolor_ == "background" && support::prefixIs(lmcol, "#")) + dmcolor_ = X11hexname(inverseRGBColor(rgbFromHexName(lmcol))); + else if (!dmcol.empty()) + dmcolor_ = dmcol; // Update the Color table - string color = str; - bool darkmode = theApp() ? theApp()->isInDarkMode() : false; - if (color == "none") - color = lcolor.getX11HexName(Color_background, darkmode); - else if (color.size() != 7 || color[0] != '#') - color = lcolor.getX11HexName(lcolor.getFromLyXName(color), darkmode); + string lmcolor = lmcolor_; + string dmcolor = dmcolor_; + if (lmcolor == "none") + lmcolor = lcolor.getX11HexName(Color_background); + else if (lmcolor.size() != 7 || lmcolor[0] != '#') + lmcolor = lcolor.getX11HexName(lcolor.getFromLyXName(lmcolor)); + if (dmcolor == "none") + dmcolor = lcolor.getX11HexName(Color_background, true); + else if (dmcolor.size() != 7 || dmcolor[0] != '#') + dmcolor = lcolor.getX11HexName(lcolor.getFromLyXName(dmcolor), true); + // FIXME UNICODE - lcolor.setColor(to_utf8(branch_), color); + lcolor.setColor("branch" + convert(branch_list_id_) + + to_utf8(branch_), lmcolor, dmcolor); } @@ -139,6 +168,7 @@ bool BranchList::add(docstring const & s) br.setBranch(name); br.setSelected(false); br.setFileNameSuffix(false); + br.setListID(id_); list_.push_back(br); } if (j == docstring::npos) @@ -165,7 +195,7 @@ bool BranchList::rename(docstring const & oldname, if (find(newname)) { // new name already taken if (merge) - return remove(oldname); + return remove(oldname); return false; }