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&exp=0&select=583589&tid=583589

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?


Reply via email to