[GSoC] Support of pluggable theming engines

Ivan Akulinchev ivan.akulinchev at gmail.com
Sat Mar 26 14:34:22 CDT 2016


I wrote a brief roadmap:

1. Improve uxtheme handles. Currently they are just void pointers to
   the internal structures. All other libraries do it using a handle
   table [1, 2, 3].
2. Move all MSSTYLES-related code to winemsstyles.drv. At this step
   such uxtheme functions as DrawThemeBackground will be stubbed.
3. Add support for uxtheme drivers. At the startup the registry key
   HKCU\Software\Wine\Drivers\Theme will be read. This is a comma-
   separated list such as "gtk3,qt5,mac,msstyles". In the loop all
   drivers will be tried until the working one found. Note the
   suggested order. If winegtk3.drv see the DESKTOP_SESSION
   environment variable is set to KDE, it should return FALSE from the
   entry point, so wineqt5.drv will be tried. This is a bug founded by
   Ruslan Kabatsayev last year [4]. If nothing found, the last one
   (winemsstyles.drv) should be used.
4. Work on the activation context. This is a complex step I need to
   describe separately...
5. Implement Buffered Paint API [5].
6. Add double buffering support to comctl32 (I hate flipping!!!)
7. Add support for animated transitions like Windows Vista does.
8. Fix other problems in comctl32 that I hate...
9. Move the existing code from uxthemegtk [6] to winegtk3.drv.
10. Improve winegt3.drv until the deadline ;-)

[1] https://github.com/wine-mirror/wine/blob/master/dlls/gdi32/gdiobj.c
[2] https://github.com/wine-mirror/wine/blob/master/dlls/winhttp/handle.c
[3] https://github.com/wine-mirror/wine/blob/master/server/handle.c
[4] https://www.winehq.org/pipermail/wine-devel/2015-July/108232.html
[5]
https://msdn.microsoft.com/en-us/library/windows/desktop/bb773257%28v=vs.85%29.aspx
[6] https://github.com/akulinchev/uxthemegtk



More information about the wine-devel mailing list