IShellBrowser/ICommDlgBrowser Theme draw problem

Reece Dunn msclrhd at googlemail.com
Mon Feb 22 01:39:37 CST 2010


On 21 February 2010 23:12, Kenneth Robinette <support at securenetterm.com> wrote:
> 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?

File a bug. Include a screenshot of native and wine versions.

Have you tested other themes and applications to see if that change
breaks anything?

NOTE: The change should really check for BT_BORDERFILL bgtype and then
only call UXTHEME_DrawBorderRectangle().

What is really needed is a small application that calls each theme
drawing function for the different part/state combinations so that
wine and native can be compared with different themes.

Thanks for helping wine,
- Reece



More information about the wine-devel mailing list