codecadwallader / codemaid

CodeMaid is an open source Visual Studio extension to cleanup and simplify our C#, C++, F#, VB, PHP, PowerShell, JSON, XAML, XML, ASP, HTML, CSS, LESS, SCSS, JavaScript and TypeScript coding.
http://www.codemaid.net
GNU Lesser General Public License v3.0
1.92k stars 363 forks source link

High-Contrast-Theme-issues #170

Open MartinL0815 opened 9 years ago

MartinL0815 commented 9 years ago

Hi,

since needing to switch to a dark high-contrast-mode, I have some problems with some applications.

One application I use is CodeMaid, which has some issues as well.

  1. The tool tips in Code Spade are not using the override system colors, use "light" colors and are difficult to read for me. CodeSpade tool tips
  2. The settings dialog respects my configured 150% UI scaling, but is just small enough to fit into the screen, while to bottom border is already cut off. But the real issue is, that the dialog uses partly the system colors and partly not. iCodeMaid Settings So the dialog is unusable for me. The window background should be ::GetSysColor(COLOR_WINDOW), which would be black in my case using high-contrast-theme #1. The text color should be ::GetSysColor(COLOR_WINDOW_TEXT), which is already yellow in my case. The edit controls are already painted using the right colors.

If I talk about something difficult or unusable for "me", than please think of all the other people with eye disabilities needing to use high-contrast-themes provided by Windows, which have an overriding semantic, which means ... the usage of the system color is mandatory in the case of high-contrast-theming!

Best regards,

Martin

codecadwallader commented 9 years ago

Thank you for reporting the issue. We have not used high contrast modes (as you can clearly tell).

We built our theming to try and line up with Visual Studio's behavior - which supports both light and dark modes. The first option on the first dialog screen is to choose the Theme. By default it is set to auto-detect (i.e. pick up Visual Studio's dominant background color, and then choose dark or light). The other two options are correspondingly, dark and light.

The options dialog, in particular, is something that does not theme at all. This matches with Visual Studio's options dialog, which always has the same gray/white regardless of the active theme.

I would like to support the high contrast use case. It may take some time to address it, so please feel free to help contribute if you would like to expedite better support. If you could please subscribe to this thread, I can post screenshots along the way of how it is shaping up. Also, please let me know if there are other areas you encounter with CodeMaid that also need addressed.

MartinL0815 commented 9 years ago

Thanks Steve,

for your reply.

While the Visual Studio internal theming does not change the look of the options dialog or other dialogs, the high-contrast-mode does change it:

VS2013 Options Dialog in a high-contrast-mode

MSDN tells, that such accessibility helpers like high-contrast-mode are mandatory, so every application should let those high-contrast-mode colors (dark or light) override its own, should change its "outfit" and so Visual Studio does!

Our UI library checks for a high-contrast-mode and lets its VisualManagers adapt the mandatory system color usage and changed visualization of the controls:

    m_bIsBlackHighContrast = 
        ::GetSysColor (COLOR_3DLIGHT) == RGB (255, 255, 255) &&
        ::GetSysColor (COLOR_3DFACE) == RGB (0, 0, 0);

    m_bIsWhiteHighContrast = 
        ::GetSysColor (COLOR_3DDKSHADOW) == RGB (0, 0, 0) &&
        ::GetSysColor (COLOR_3DFACE) == RGB (255, 255, 255);

    BOOL IsHighContastMode () const
    {
        return m_bIsWhiteHighContrast || m_bIsBlackHighContrast;
    }

The CodeMaid options dialog should test for a high-contrast-mode, too. If detected, than the Visual Studio theming colors are unimportant and the system colors are to be used!

Taking a look at the screenshot of the CodeMaid dialog I wonder, if the usage of Visual Studio theme colors is complete, since the edit controls colors and the font color of the dialog are not explicitly changed and are already high-contrast-mode compatible!

I try to get involved in fixing this, by expertise, by reviewing in my private time.

Thanks in advance!

Best regards,

Martin