diff --git a/uppsrc/CtrlLib/MenuItem.cpp b/uppsrc/CtrlLib/MenuItem.cpp index b07973a65..a7a6ead0b 100644 --- a/uppsrc/CtrlLib/MenuItem.cpp +++ b/uppsrc/CtrlLib/MenuItem.cpp @@ -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);