diff options
| author | jmanc3 <jman12316@live.com> | 2025-08-28 04:21:36 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-28 11:21:36 +0200 |
| commit | 4e8657568c6ccf3cde90edbceb50e0704bde4e43 (patch) | |
| tree | 9ce699832fb262a7bcc3ca325c129aa1dfc5a165 | |
| parent | 81bf4eccba449bfe2b6adfb51260108aec710d4f (diff) | |
xwayland: handle minimize and maximize requests (#11536)
| -rw-r--r-- | src/xwayland/XWM.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/xwayland/XWM.cpp b/src/xwayland/XWM.cpp index d7b7f523..5435e264 100644 --- a/src/xwayland/XWM.cpp +++ b/src/xwayland/XWM.cpp @@ -425,10 +425,21 @@ void CXWM::handleClientMessage(xcb_client_message_event_t* e) { if (prop == HYPRATOMS["_NET_WM_STATE_FULLSCREEN"]) XSURF->m_state.requestsFullscreen = updateState(action, XSURF->m_fullscreen); + if (prop == HYPRATOMS["_NET_WM_STATE_HIDDEN"]) + XSURF->m_state.requestsMinimize = updateState(action, XSURF->m_minimized); + if (prop == HYPRATOMS["_NET_WM_STATE_MAXIMIZED_VERT"] || prop == HYPRATOMS["_NET_WM_STATE_MAXIMIZED_HORZ"]) + XSURF->m_state.requestsMaximize = updateState(action, XSURF->m_maximized); } XSURF->m_events.stateChanged.emit(); } + } else if (e->type == HYPRATOMS["WM_CHANGE_STATE"]) { + int state = e->data.data32[0]; + if (state == XCB_ICCCM_WM_STATE_ICONIC || state == XCB_ICCCM_WM_STATE_WITHDRAWN) + XSURF->m_state.requestsMinimize = true; + else if (state == XCB_ICCCM_WM_STATE_NORMAL) + XSURF->m_state.requestsMinimize = false; + XSURF->m_events.stateChanged.emit(); } else if (e->type == HYPRATOMS["_NET_ACTIVE_WINDOW"]) { XSURF->m_events.activate.emit(); } else if (e->type == HYPRATOMS["XdndStatus"]) { |
