summaryrefslogtreecommitdiff
path: root/src/xwayland/XWM.cpp
diff options
context:
space:
mode:
authorjmanc3 <jman12316@live.com>2025-08-28 04:21:36 -0500
committerGitHub <noreply@github.com>2025-08-28 11:21:36 +0200
commit4e8657568c6ccf3cde90edbceb50e0704bde4e43 (patch)
tree9ce699832fb262a7bcc3ca325c129aa1dfc5a165 /src/xwayland/XWM.cpp
parent81bf4eccba449bfe2b6adfb51260108aec710d4f (diff)
xwayland: handle minimize and maximize requests (#11536)
Diffstat (limited to 'src/xwayland/XWM.cpp')
-rw-r--r--src/xwayland/XWM.cpp11
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"]) {