From 4e8657568c6ccf3cde90edbceb50e0704bde4e43 Mon Sep 17 00:00:00 2001 From: jmanc3 Date: Thu, 28 Aug 2025 04:21:36 -0500 Subject: [PATCH] xwayland: handle minimize and maximize requests (#11536) --- src/xwayland/XWM.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) 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"]) {