处理焦点相关事件

This commit is contained in:
2025-08-24 08:46:17 +08:00
parent 25ef44e5f9
commit 7eea0ee2d3
12 changed files with 341 additions and 106 deletions

View File

@@ -285,3 +285,19 @@ void change_window_border_color(xcb_window_t window, uint32_t argb) {
xcb_params_cw_t params = {.border_pixel = argb};
xcb_aux_change_window_attributes(conn, window, XCB_CW_BORDER_PIXEL, &params);
}
void focus_window(xcb_window_t window) {
xcb_window_t root = screen->root;
if (window == WINDOW_NONE) {
xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, root,
XCB_CURRENT_TIME);
xcb_delete_property(conn, root, ewmh->_NET_ACTIVE_WINDOW);
} else {
xcb_set_input_focus(conn, XCB_INPUT_FOCUS_POINTER_ROOT, window,
XCB_CURRENT_TIME);
xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root,
ewmh->_NET_ACTIVE_WINDOW, XCB_ATOM_WINDOW, 32, 1,
&window);
send_event(window, atom_wm_take_focus);
}
}