处理焦点相关事件
This commit is contained in:
@@ -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, ¶ms);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user