支持窗口全屏操作

This commit is contained in:
2026-01-29 07:46:06 +08:00
parent a772d0f56f
commit a5ce85be78
7 changed files with 71 additions and 1 deletions

View File

@@ -144,6 +144,27 @@ static void client_message(xcb_client_message_event_t *ev) {
client_focus(c);
return;
}
} else if (ev->type == _NET_WM_STATE) {
/**
* _NET_WM_STATE 协议数据格式为
* data.data32 = {
* action, // 操作类型(添加/移除/切换)
* property1, // 第一个状态原子如_NET_WM_STATE_FULLSCREEN
* property2, // 第二个状态原子可选通常为0
* 0, // 预留字段固定为0
* 0 // 预留字段固定为0
* };
* action 值可能为
* _NET_WM_STATE_ADD1添加全屏状态窗口进入全屏模式
* _NET_WM_STATE_REMOVE0移除全屏状态窗口退出全屏模式
* _NET_WM_STATE_TOGGLE2切换全屏状态若当前全屏则退出反之进入
*/
if (ev->data.data32[1] == _NET_WM_STATE_FULLSCREEN ||
ev->data.data32[2] == _NET_WM_STATE_FULLSCREEN) {
bool fullscreen = ev->data.data32[0];
if (ev->data.data32[0] == 2) fullscreen = !c->fullscreen;
client_set_fullscreen(c, fullscreen);
}
}
}