all repos — openbox @ 619eeaa962e8718901cfc9eabe56e503ba40cd90

openbox fork - make it a bit more like ryudo

grab the pointer accross actions run by the applications, the same as for
actions run by the user
Dana Jansens danakj@orodu.net
commit

619eeaa962e8718901cfc9eabe56e503ba40cd90

parent

4fdf8a431538eece230016ec2e0fd94d62fcec93

1 files changed, 18 insertions(+), 6 deletions(-)

jump to
M openbox/client.copenbox/client.c

@@ -3268,6 +3268,11 @@ undecorated = FALSE;

} } } + + /* Grab pointer across these, so it is the same as actions. Enter events + won't be generated by the windows moving around */ + grab_pointer(FALSE, FALSE, OB_CURSOR_NONE); + if (max_horz != self->max_horz || max_vert != self->max_vert) { if (max_horz != self->max_horz && max_vert != self->max_vert) { /* toggling both */

@@ -3293,23 +3298,30 @@ if (shaded != self->shaded)

client_shade(self, shaded); if (undecorated != self->undecorated) client_set_undecorated(self, undecorated); + if (above != self->above || below != self->below) { + self->above = above; + self->below = below; + client_calc_layer(self); + } + + /* These things below can change focus so we can't grab pointer for them */ + ungrab_pointer(); + if (modal != self->modal) { self->modal = modal; /* when a window changes modality, then its stacking order with its transients needs to change */ stacking_raise(CLIENT_AS_WINDOW(self)); + /* it also may get focused. if something is focused that shouldn't + be focused anymore, then move the focus */ + if (focus_client && client_focus_target(focus_client) != focus_client) + client_focus(focus_client); } if (iconic != self->iconic) client_iconify(self, iconic, FALSE, FALSE); if (demands_attention != self->demands_attention) client_hilite(self, demands_attention); - - if (above != self->above || below != self->below) { - self->above = above; - self->below = below; - client_calc_layer(self); - } client_change_state(self); /* change the hint to reflect these changes */ }