bbidulock / icewm

A window manager designed for speed, usability, and consistency
Other
586 stars 99 forks source link

Cannot see arrows in menus if the background color is black #528

Closed qsmodo closed 3 years ago

qsmodo commented 3 years ago

Hi there! I have set ColorNormalMenu=black in my preferences file to have a black background for menus. The problem is that the borders are also black and I cannot see the right arrow on items that pop up another menu, unless I focus them:

14-12:56:45

It would be useful if the border color (or at least the arrow color) could be forced to be different from the background color. I tried a quirk on ymenu.cc but I didn't make any progress...

By the way, congratulations for 2.0.0, nice landmark of this truly amazing project which pleases both novice and experienced Linux users. Many thanks!

qsmodo commented 3 years ago

Upon revisiting the issue today, the fix was actually very simple (actually not the best choice, other comments show why):

1168c1168
<                         g.setColor(menuBg);
---
>                         g.setColor(menuItemFg);
gijsbers commented 3 years ago

Are these two lines reversed? Could this be too simple? Why not use fg? fg is defined at line 1076 as:

                YColor fg(mitem->isEnabled() ? active ? activeMenuItemFg
                           : menuItemFg
                           : disabledMenuItemFg)

You don't provide a detailed expose of the careful analysis you did about the many possibilities which exist here and the weighing which led to your final conclusion. Or what your theme and value of the Look setting is.

qsmodo commented 3 years ago

My sincere apologies for being so vague, I'm still getting habituated to the community, and yes, the lines were reversed. These are my non-default settings in the preferences file:

ColorNormalMenu=black
ColorNormalMenuItemText=green
ColorActiveMenuItem=green
ColorActiveMenuItemText=black

I didn't realize the existence of fg, I simply noticed using the text foreground color would solve the problem and went for it. If the change I proposed is done, the arrow becomes green. However, what I did not realize is that it is always green, even when the item with the arrow has focus. In that regard, fg is a better choice because the arrow becomes black when the item is focused, i.e., the arrow is always visible.

The fact that I only had to change that line is because my theme has the Look=Motif setting. So, indeed, my proposed solution was not of much help insofar as others may not use a Look=Motif theme.

gijsbers commented 3 years ago

Any such solution needs to be tested against existing themes. The themes gtkq, motif-dark, motif, yellowmotif look much worse when this idea is implemented, so we can't do it. Maybe you can look at these themes to see how they did it?