all repos — openbox @ dfd524926e5d8f0b9cdb120ce1d943a7f8b1af3a

openbox fork - make it a bit more like ryudo

add client_raise and client_lower which just fire off actions
Dana Jansens danakj@orodu.net
commit

dfd524926e5d8f0b9cdb120ce1d943a7f8b1af3a

parent

411cc1d1d9e0c7ad07fe6bce548ccf101a2f4c7a

2 files changed, 32 insertions(+), 2 deletions(-)

jump to
M openbox/client.copenbox/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.hopenbox/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