Bugfix: Don’t change focus after (graphical) resizing
This commit is contained in:
parent
422846e1c5
commit
664e30903c
|
@ -117,4 +117,12 @@ void x_set_i3_atoms();
|
|||
*/
|
||||
void x_set_warp_to(Rect *rect);
|
||||
|
||||
/**
|
||||
* Applies the given mask to the event mask of every i3 window decoration X11
|
||||
* window. This is useful to disable EnterNotify while resizing so that focus
|
||||
* is untouched.
|
||||
*
|
||||
*/
|
||||
void x_mask_event_mask(uint32_t mask);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -58,6 +58,9 @@ int resize_graphical_handler(Con *first, Con *second, orientation_t orientation,
|
|||
Con *output = con_get_output(first);
|
||||
DLOG("x = %d, width = %d\n", output->rect.x, output->rect.width);
|
||||
|
||||
x_mask_event_mask(~XCB_EVENT_MASK_ENTER_WINDOW);
|
||||
xcb_flush(conn);
|
||||
|
||||
uint32_t mask = 0;
|
||||
uint32_t values[2];
|
||||
|
||||
|
|
16
src/x.c
16
src/x.c
|
@ -964,3 +964,19 @@ void x_set_warp_to(Rect *rect)
|
|||
{
|
||||
warp_to = rect;
|
||||
}
|
||||
|
||||
/*
|
||||
* Applies the given mask to the event mask of every i3 window decoration X11
|
||||
* window. This is useful to disable EnterNotify while resizing so that focus
|
||||
* is untouched.
|
||||
*
|
||||
*/
|
||||
void x_mask_event_mask(uint32_t mask) {
|
||||
uint32_t values[] = { FRAME_EVENT_MASK & mask };
|
||||
|
||||
con_state *state;
|
||||
CIRCLEQ_FOREACH_REVERSE(state, &state_head, state) {
|
||||
if (state->mapped)
|
||||
xcb_change_window_attributes(conn, state->id, XCB_CW_EVENT_MASK, values);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue