This is my first attempt at submitting a patch to WINE, so please excuse me if I have broken any conventions or am going through the wrong channel. As it currently stands, wine is setting the 'MWM_DECOR_BORDER' hint on managed but undecorated windows, such as iTunes, or Winamp. This does not cause problems in KDE, but in Gnome it puts a gray border around such windows.
For me this causes problem in KDE too. Not just border but an ugly caption too :-( See http://www.winehq.org/pipermail/wine-devel/2007-September/059366.html
Not setting this hint does not seem to cause problems in KDE and fixes the problem in Gnome. A patch to do just that is attached. Comments?
--- dlls/winex11.drv/window_orig.c 2007-09-30 18:14:56.281259713 -0400 +++ dlls/winex11.drv/window.c 2007-09-30 18:18:44.724576520 -0400 @@ -591,11 +591,6 @@ if (style & WS_MINIMIZEBOX) mwm_hints.decorations |=
MWM_DECOR_MINIMIZE;
if (style & WS_MAXIMIZEBOX) mwm_hints.decorations |=
MWM_DECOR_MAXIMIZE;
}
if (ex_style & WS_EX_DLGMODALFRAME) mwm_hints.decorations |=
MWM_DECOR_BORDER;
else if (style & WS_THICKFRAME) mwm_hints.decorations |=
MWM_DECOR_BORDER | MWM_DECOR_RESIZEH;
else if ((style & (WS_DLGFRAME|WS_BORDER)) == WS_DLGFRAME)
mwm_hints.decorations |= MWM_DECOR_BORDER;
else if (style & WS_BORDER) mwm_hints.decorations |=
MWM_DECOR_BORDER;
else if (!(style & (WS_CHILD|WS_POPUP))) mwm_hints.decorations |=
MWM_DECOR_BORDER;
}
XChangeProperty( display, data->whole_window,
x11drv_atom(_MOTIF_WM_HINTS),
You overdid here a little: WS_THICKFRAME must have thick border.
As I think, we should not mix WS_BORDER and MWM_DECOR_BORDER. They have DIFFERENT semantics. WS_BORDER is 1px border, but MWM_DECOR_BORDER is a thick border. What for me, I'd deleted just these lines:
else if (style & WS_BORDER) mwm_hints.decorations |=
MWM_DECOR_BORDER;
else if (!(style & (WS_CHILD|WS_POPUP))) mwm_hints.decorations |=
MWM_DECOR_BORDER;
and draw thin 1px border 'manually' (I mean, in user32, do not left it to Window Manager)
-- Kirill