grab the pointer accross actions run by the applications, the same as for
actions run by the user
This commit is contained in:
parent
4fdf8a4315
commit
619eeaa962
1 changed files with 18 additions and 6 deletions
|
@ -3268,6 +3268,11 @@ void client_set_state(ObClient *self, Atom action, glong data1, glong data2)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 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,11 +3298,24 @@ void client_set_state(ObClient *self, Atom action, glong data1, glong data2)
|
|||
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);
|
||||
|
@ -3305,12 +3323,6 @@ void client_set_state(ObClient *self, Atom action, glong data1, glong data2)
|
|||
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 */
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue