Map (WS_EX_TOOLWINDOW & WS_CAPTION) to _NET_WM_WINDOW_TYPE_UTILITY.
diff --git a/dlls/x11drv/window.c b/dlls/x11drv/window.c index 446fdf2..f6ed8c7 100644 --- a/dlls/x11drv/window.c +++ b/dlls/x11drv/window.c
@@ -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,10 +121,11 @@ 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 */ - if (win->dwExStyle & WS_EX_TOOLWINDOW) return FALSE; - /* windows with caption or thick frame are managed */ + /* windows with caption are managed */ if ((win->dwStyle & WS_CAPTION) == WS_CAPTION) return TRUE; + /* tool windows are not managed */ + if (win->dwExStyle & WS_EX_TOOLWINDOW) return FALSE; + /* windows with thick frame are managed */ if (win->dwStyle & WS_THICKFRAME) return TRUE; /* default: not managed */ return FALSE; @@ -424,6 +427,14 @@ 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) + { + 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;
diff --git a/dlls/x11drv/x11drv.h b/dlls/x11drv/x11drv.h index 6020c69..b09bc49 100644 --- a/dlls/x11drv/x11drv.h +++ b/dlls/x11drv/x11drv.h
@@ -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,