CtrlLib: Another transparent menu fix...

git-svn-id: svn://ultimatepp.org/upp/trunk@8222 f0d560ea-af0d-0410-9eb7-867de7ffcac7
This commit is contained in:
cxl 2015-02-28 19:10:50 +00:00
parent 664a531af0
commit c25b802a76

View file

@ -181,12 +181,14 @@ void MenuItemBase::PaintTopItem(Draw& w, int state) {
Size isz = GetTextSize(text, StdFont());
Color txt = opaque ? style->topitemtext[0] : GetLabelTextColor(this);
Color hltxt = opaque2 ? style->topitemtext[state] : GetLabelTextColor(this);
if(!opaque && state != 2) { // Fix issues when text color is not compatible with transparent background (e.g. Ubuntu Ambience)
int g = Grayscale(bg);
if(!opaque && state != 2) { // Fix issues when text color is not compatible with transparent background (e.g. Ubuntu Ambience)]
Color c = state == 1 ? SColorHighlight() : bg;
int g = Grayscale(c);
bool dark = IsDark(c);
if(abs(g - Grayscale(txt)) < 70)
txt = IsDark(bg) ? White() : Black();
txt = dark ? White() : Black();
if(abs(g - Grayscale(hltxt)) < 70)
hltxt = IsDark(bg) ? White() : Black();
hltxt = dark ? White() : Black();
}
DrawMenuText(w, 6, (sz.cy - isz.cy) / 2, text, GetFont(), IsItemEnabled(), state,
txt, hltxt);