add client_raise and client_lower which just fire off actions
Dana Jansens danakj@orodu.net
2 files changed,
32 insertions(+),
2 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -2289,7 +2289,7 @@ if (!donthide)
client_showhide(self); /* raise if it was not already on the desktop */ if (old != DESKTOP_ALL) - action_run_string("Raise", self); + client_raise(self); screen_update_areas(); /* add to the new desktop(s) */@@ -2602,7 +2602,7 @@ {
if (client_normal(self) && screen_showing_desktop) screen_show_desktop(FALSE); if (self->iconic) - client_iconify(self, FALSE, FALSE); + client_iconify(self, FALSE, here); if (self->desktop != DESKTOP_ALL && self->desktop != screen_desktop) { if (here)@@ -2623,6 +2623,16 @@ we want the results from the focus change to take place BEFORE we go
about raising the window. when a fullscreen window loses focus, we need this or else the raise wont be able to raise above the to-lose-focus fullscreen window. */ + client_raise(self); +} + +void client_raise(ObClient *self) +{ + action_run_string("Raise", self); +} + +void client_lower(ObClient *self) +{ action_run_string("Raise", self); }
M
openbox/client.h
→
openbox/client.h
@@ -451,6 +451,26 @@
/*! Calculates the stacking layer for the client window */ void client_calc_layer(ObClient *self); +/*! Raises the client to the top of its stacking layer + Normally actions call to the client_* functions to make stuff go, but this + one is an exception. It just fires off an action, which will be queued. + This is because stacking order rules can be changed by focus state, and so + any time focus changes you have to wait for it to complete before you can + properly restart windows. As such, this only queues an action for later + execution, once the focus change has gone through. +*/ +void client_raise(ObClient *self); + +/*! Lowers the client to the bottom of its stacking layer + Normally actions call to the client_* functions to make stuff go, but this + one is an exception. It just fires off an action, which will be queued. + This is because stacking order rules can be changed by focus state, and so + any time focus changes you have to wait for it to complete before you can + properly restart windows. As such, this only queues an action for later + execution, once the focus change has gone through. +*/ +void client_lower(ObClient *self); + /*! Updates the window's transient status, and any parents of it */ void client_update_transient_for(ObClient *self); /*! Update the protocols that the window supports and adjusts things if they