X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient.c;h=9327cbfd7333d6e554cf5df56ea34267e0612a62;hb=37875f091d8a19818b6325923a57f6f7f3cd820c;hp=658b05dbff00abb689201016730451598587c89b;hpb=08e42acaadf8868abb94dc75da0daa9c6e4e2d1c;p=chaz%2Fopenbox diff --git a/openbox/client.c b/openbox/client.c index 658b05db..9327cbfd 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -1103,7 +1103,7 @@ static void client_get_state(ObClient *self) self->below = TRUE; else if (state[i] == prop_atoms.net_wm_state_demands_attention) self->demands_attention = TRUE; - else if (state[i] == prop_atoms.ob_wm_state_undecorated) + else if (state[i] == prop_atoms.openbox_wm_state_undecorated) self->undecorated = TRUE; } @@ -1266,7 +1266,7 @@ static void client_update_transient_tree(ObClient *self, c = it->data; if (c != self && (!c->transient_for || c->transient_for != OB_TRAN_GROUP)) - c->transients = g_slist_append(c->transients, self); + c->transients = g_slist_prepend(c->transients, self); } } /* If we are now transient for a single window which we weren't before, @@ -1279,7 +1279,7 @@ static void client_update_transient_tree(ObClient *self, newparent != oldparent && /* don't make ourself its child if it is already our child */ !client_is_direct_child(self, newparent)) - newparent->transients = g_slist_append(newparent->transients, self); + newparent->transients = g_slist_prepend(newparent->transients, self); /* If the group changed then we need to add any new group transient windows to our children. But if we're transient for the group, then @@ -1298,7 +1298,7 @@ static void client_update_transient_tree(ObClient *self, /* Don't make it our child if it is already our parent */ !client_is_direct_child(c, self)) { - self->transients = g_slist_append(self->transients, c); + self->transients = g_slist_prepend(self->transients, c); } } } @@ -2061,7 +2061,7 @@ static void client_change_wm_state(ObClient *self) old = self->wmstate; - if (self->shaded || self->iconic || !self->frame->visible) + if (self->shaded || !self->frame->visible) self->wmstate = IconicState; else self->wmstate = NormalState; @@ -2105,7 +2105,7 @@ static void client_change_state(ObClient *self) if (self->demands_attention) netstate[num++] = prop_atoms.net_wm_state_demands_attention; if (self->undecorated) - netstate[num++] = prop_atoms.ob_wm_state_undecorated; + netstate[num++] = prop_atoms.openbox_wm_state_undecorated; PROP_SETA32(self->window, net_wm_state, atom, netstate, num); if (self->frame) @@ -2724,23 +2724,10 @@ static void client_iconify_recursive(ObClient *self, if (changed) { client_change_state(self); - if (iconic) { - if (ob_state() != OB_STATE_STARTING && config_animate_iconify) { - /* delay the showhide until the window is done the animation */ - frame_begin_iconify_animation - (self->frame, iconic, - (ObFrameIconifyAnimateFunc)client_showhide, self); - /* but focus a new window now please */ - focus_fallback(TRUE); - } else - client_showhide(self); - } else { - if (config_animate_iconify) - /* start the animation then show it, this way the whole window - doesnt get shown, just the first step of the animation */ - frame_begin_iconify_animation(self->frame, iconic, NULL, NULL); - client_showhide(self); - } + if (ob_state() != OB_STATE_STARTING && config_animate_iconify) + frame_begin_iconify_animation(self->frame, iconic); + /* do this after starting the animation so it doesn't flash */ + client_showhide(self); } /* iconify all direct transients, and deiconify all transients @@ -3066,7 +3053,7 @@ void client_set_state(ObClient *self, Atom action, glong data1, glong data2) action = self->demands_attention ? prop_atoms.net_wm_state_remove : prop_atoms.net_wm_state_add; - else if (state == prop_atoms.ob_wm_state_undecorated) + else if (state == prop_atoms.openbox_wm_state_undecorated) action = undecorated ? prop_atoms.net_wm_state_remove : prop_atoms.net_wm_state_add; } @@ -3096,7 +3083,7 @@ void client_set_state(ObClient *self, Atom action, glong data1, glong data2) self->below = TRUE; } else if (state == prop_atoms.net_wm_state_demands_attention) { demands_attention = TRUE; - } else if (state == prop_atoms.ob_wm_state_undecorated) { + } else if (state == prop_atoms.openbox_wm_state_undecorated) { undecorated = TRUE; } @@ -3123,7 +3110,7 @@ void client_set_state(ObClient *self, Atom action, glong data1, glong data2) self->below = FALSE; } else if (state == prop_atoms.net_wm_state_demands_attention) { demands_attention = FALSE; - } else if (state == prop_atoms.ob_wm_state_undecorated) { + } else if (state == prop_atoms.openbox_wm_state_undecorated) { undecorated = FALSE; } } @@ -3730,7 +3717,10 @@ ObClient* client_under_pointer() if (WINDOW_IS_CLIENT(it->data)) { ObClient *c = WINDOW_AS_CLIENT(it->data); if (c->frame->visible && - RECT_CONTAINS(c->frame->area, x, y)) { + /* ignore all animating windows */ + !frame_iconify_animating(c->frame) && + RECT_CONTAINS(c->frame->area, x, y)) + { ret = c; break; }