Implement support for NETWM utility window type
Mike Hearn
mike at theoretic.com
Sun Nov 30 18:40:38 CST 2003
ChangeLog:
Map (WS_EX_TOOLWINDOW & WS_CAPTION) to _NET_WM_WINDOW_TYPE_UTILITY.
This makes Delphi a bit easier to use, as floating palettes aren't
unmanaged anymore.
Index: dlls/x11drv/x11drv.h
===================================================================
RCS file: /home/wine/wine/dlls/x11drv/x11drv.h,v
retrieving revision 1.11
diff -u -b -r1.11 x11drv.h
--- dlls/x11drv/x11drv.h 25 Nov 2003 03:27:38 -0000 1.11
+++ dlls/x11drv/x11drv.h 1 Dec 2003 00:38:03 -0000
@@ -395,6 +395,8 @@
XATOM__NET_WM_PID,
XATOM__NET_WM_PING,
XATOM__NET_WM_NAME,
+ XATOM__NET_WM_WINDOW_TYPE,
+ XATOM__NET_WM_WINDOW_TYPE_UTILITY,
XATOM_XdndAware,
XATOM_XdndEnter,
XATOM_XdndPosition,
Index: dlls/x11drv/window.c
===================================================================
RCS file: /home/wine/wine/dlls/x11drv/window.c,v
retrieving revision 1.65
diff -u -b -r1.65 window.c
--- dlls/x11drv/window.c 21 Nov 2003 21:48:36 -0000 1.65
+++ dlls/x11drv/window.c 1 Dec 2003 00:38:03 -0000
@@ -81,6 +81,8 @@
"_NET_WM_PID",
"_NET_WM_PING",
"_NET_WM_NAME",
+ "_NET_WM_WINDOW_TYPE",
+ "_NET_WM_WINDOW_TYPE_UTILITY",
"XdndAware",
"XdndEnter",
"XdndPosition",
@@ -119,7 +121,8 @@
if (win->dwExStyle & WS_EX_TRAYWINDOW) return TRUE;
/* child windows are not managed */
if (win->dwStyle & WS_CHILD) return FALSE;
- /* tool windows are not managed */
+ /* tool windows are not managed unless they have a caption */
+ if ((win->dwExStyle & WS_EX_TOOLWINDOW) && ((win->dwStyle & WS_CAPTION) == WS_CAPTION)) return TRUE;
if (win->dwExStyle & WS_EX_TOOLWINDOW) return FALSE;
/* windows with caption or thick frame are managed */
if ((win->dwStyle & WS_CAPTION) == WS_CAPTION) return TRUE;
@@ -424,6 +427,12 @@
XChangeProperty(display, data->whole_window, x11drv_atom(_NET_WM_PID),
XA_CARDINAL, 32, PropModeReplace, (char *)&i, 1);
+ /* map WS_EX_TOOLWINDOW to _NET_WM_WINDOW_TYPE_UTILITY */
+ if ((win->dwExStyle & WS_EX_TOOLWINDOW) && (win->dwStyle & WS_CAPTION)) {
+ Atom a = x11drv_atom(_NET_WM_WINDOW_TYPE_UTILITY);
+ XChangeProperty(display, data->whole_window, x11drv_atom(_NET_WM_WINDOW_TYPE), XA_ATOM, 32, PropModeReplace, (char*)&a, 1);
+ }
+
mwm_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
mwm_hints.functions = 0;
if ((win->dwStyle & WS_CAPTION) == WS_CAPTION) mwm_hints.functions |= MWM_FUNC_MOVE;
@@ -785,6 +794,8 @@
0 );
}
+
+
/* non-maximized child must be at bottom of Z order */
if ((win->dwStyle & (WS_CHILD|WS_MAXIMIZE)) == WS_CHILD)
{
More information about the wine-patches
mailing list