diff options
-rw-r--r-- | hw/xwin/winmultiwindowwm.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/hw/xwin/winmultiwindowwm.c b/hw/xwin/winmultiwindowwm.c index e23913e9c..09ec82692 100644 --- a/hw/xwin/winmultiwindowwm.c +++ b/hw/xwin/winmultiwindowwm.c @@ -1471,6 +1471,7 @@ winInitMultiWindowWM(WMInfoPtr pWMInfo, WMProcArgPtr pProcArg) pWMInfo->ewmh._NET_CLOSE_WINDOW, pWMInfo->ewmh._NET_WM_WINDOW_TYPE, pWMInfo->ewmh._NET_WM_WINDOW_TYPE_DOCK, + pWMInfo->ewmh._NET_WM_WINDOW_TYPE_SPLASH, pWMInfo->ewmh._NET_WM_STATE, pWMInfo->ewmh._NET_WM_STATE_HIDDEN, pWMInfo->ewmh._NET_WM_STATE_ABOVE, @@ -1613,10 +1614,12 @@ winDeinitMultiWindowWM(void) static void winApplyHints(WMInfoPtr pWMInfo, xcb_window_t iWindow, HWND hWnd, HWND * zstyle) { + xcb_connection_t *conn = pWMInfo->conn; static xcb_atom_t windowState, motif_wm_hints; static xcb_atom_t hiddenState, fullscreenState, belowState, aboveState, skiptaskbarState; + static xcb_atom_t splashType; static int generation; unsigned long hint = 0, maxmin = 0; @@ -1636,6 +1639,7 @@ winApplyHints(WMInfoPtr pWMInfo, xcb_window_t iWindow, HWND hWnd, HWND * zstyle) belowState = intern_atom(conn, "_NET_WM_STATE_BELOW"); aboveState = intern_atom(conn, "_NET_WM_STATE_ABOVE"); skiptaskbarState = intern_atom(conn, "_NET_WM_STATE_SKIP_TASKBAR"); + splashType = intern_atom(conn, "_NET_WM_WINDOW_TYPE_SPLASHSCREEN"); } { @@ -1708,6 +1712,11 @@ winApplyHints(WMInfoPtr pWMInfo, xcb_window_t iWindow, HWND hWnd, HWND * zstyle) hint = (hint & ~HINT_NOFRAME) | HINT_SKIPTASKBAR | HINT_SIZEBOX; *zstyle = HWND_TOPMOST; } + else if ((type.atoms[i] == pWMInfo->ewmh._NET_WM_WINDOW_TYPE_SPLASH) + || (type.atoms[i] == splashType)) { + hint |= (HINT_SKIPTASKBAR | HINT_NOSYSMENU | HINT_NOMINIMIZE | HINT_NOMAXIMIZE); + *zstyle = HWND_TOPMOST; + } } } } |