I am testing a SSH file transfer program which makes use of the Microsoft IShellBrowser and ICommDlgBrowser interfaces for the "local" file system view. The interface listview header (detail view) does not get painted correctly when a theme is enabled under Wine. If a theme is not selected, the problem does not happen. This can be seen using an example program available for general public download at:
http://www.codeproject.com/KB/shell/explorer.aspx?df=100&forumid=2239&am...
I traced the problem through the comctl32 listview.c module:
LISTVIEW_NCPaint() which then calls DrawThemeBackground (theme, dc, 0, 0, &r, 0);
located in the uxtheme.dll draw.c module.
If I replace the uxtheme.dll with the native version, the problem goes away.
In reviewing the DrawThemeBackground() fuction, it calls:
DrawThemeBackgoundEx()
which then calls:
UXTHEME_DrawBorderBackground()
when the bgtype is BT_BORDERFILL
The UXTHEME_DrawBorderBackgound() calls two internal functions:
UXTHEME_DrawBorderRectangle() and UXTHEME_DrawBackgroundFill()
The problem seems related to UXTHEME_DrawBackgroundFill(). If I comment this call out, everything appears to work correctly. It would appear that the UXTHEME_DrawBackgroundFill() is being called incorrectly.
Suggestions?