处理窗口销毁事件

This commit is contained in:
2025-08-24 11:35:52 +08:00
parent bac73368e3
commit 0039cd2c43
7 changed files with 80 additions and 32 deletions

View File

@@ -274,13 +274,14 @@ char *get_window_name(xcb_window_t window) {
}
}
void init_window_event_mask(xcb_window_t window) {
void set_window_event_mask(xcb_window_t window, bool clear) {
xcb_cw_t change_mask = XCB_CW_EVENT_MASK;
xcb_params_cw_t params = {
.event_mask = XCB_EVENT_MASK_ENTER_WINDOW | XCB_EVENT_MASK_FOCUS_CHANGE |
XCB_EVENT_MASK_PROPERTY_CHANGE |
XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY,
};
uint32_t event_mask = clear ? XCB_EVENT_MASK_NO_EVENT
: XCB_EVENT_MASK_ENTER_WINDOW |
XCB_EVENT_MASK_FOCUS_CHANGE |
XCB_EVENT_MASK_PROPERTY_CHANGE |
XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY;
xcb_params_cw_t params = {.event_mask = event_mask};
xcb_aux_change_window_attributes(conn, window, change_mask, &params);
}