Dark/Light themes headaches in Visual Studio 2012

On Sep 12 Microsoft launched Visual Studio 2012, arguably the ugliest Visual Studio version ever launched according to very strong feedback from the community of developers. For the first time Visual Studio added support for themes. It is arguable if individual applications should be themed, or if themes should be provided by the operating system and applications should just be themed automatically. Anyway, Microsoft Office initiated that path a few years ago with Office 2007 (own theme and fonts) and Visual Studio followed suit. The problem is that rather than providing full support for themes, Microsoft has just supplied two themes (Light and Dark) that provide new icons and lack color, and it hasn’t provided a Visual Studio 2010 theme. Not everybody likes the new icon style, and Microsoft has been reluctant to add color (some in the Release Candidate and apparently there is more coming slowly). Furthermore, after people complaining about ALL CAPS captions in toolwindows, the fix was to make the main menu all caps instead.

Since then, two development efforts in opposite directions are happening:

On the one hand, people that find VS 2012 unpalatable are trying to get back color and icons to the IDE:

– You can now use multiples themes (not just Dark/Light) using the Visual Studio 2012 Color Theme Editor available on the Visual Studio Gallery.

– Some people are even patching the icons of VS 2012 to replace them with the ones of VS 2010: Visual Studio Icon Patcher, a so crazy idea that can even work.

-Note: Microsoft provided a registry entry to remove the ALL CAPS of top menus (HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\General\SuppressUppercaseConversion, REG_DWORD value: 1), so no Visual Studio extension is required for that.

On the other hand, developers of extensions (like me) are working hard (that is, weeks or months) to adapt our add-ins, packages, etc. to the themes of Visual Studio. I have spent the last weeks doing it with MZ-Tools 7.0 and I have learned quite a bit that I will share in next posts, but suffice to say that theming Visual Studio extensions is quite a headache, even for Microsoft. For example, while all Visual Studio 2012 toolwindows are themed, only a few modal forms are (New Project, Add Reference, etc.) but many others are not (most notably, the Options window). This is because new forms use WPF while old forms use Windows Forms, and not all Windows Forms controls are well suited for themes (TabControl tabs, ListView header, disabled controls), so it is tricky, specially if you don’t own all the content of a modal form.

Microsoft has had also issues with the new themes, like these ones that I have reported, some of which were fixed for the RTM:

Document Outline toolwindow of VS 2010 shows icons of VS 11 Beta (gray)
https://connect.microsoft.com/VisualStudio/feedback/details/735124/document-outline-toolwindow-of-vs-2010-shows-icons-of-vs-11-beta-gray

(this was fixed with a convoluted hack that I will explain in a future post/article)

And others are not fixed yet:

Document Outline dropdown menus with black forecolor with Dark theme
https://connect.microsoft.com/VisualStudio/feedback/details/764325/document-outline-dropdown-menus-with-black-forecolor-with-dark-theme#details

One thought on “Dark/Light themes headaches in Visual Studio 2012”

  1. Tell me about it… I’m in the middle of adapting Entrian Source Search to deal with VS2012 themes right now, and it’s a pain.

    One small mercy is that VS themes your scrollbars for you automatically, even with native controls, so at least we’re spared that hassle (scrollbars would have been difficult to do).

    ListView headers aren’t too bad, because you can fairly easily use Custom Draw with those.

    By the way, many thanks for all your articles on Visual Studio Extensibility – I often find myself on your pages when searching for help!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.