From dfd524926e5d8f0b9cdb120ce1d943a7f8b1af3a Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Fri, 26 Sep 2003 18:15:58 +0000 Subject: [PATCH] add client_raise and client_lower which just fire off actions --- openbox/client.c | 14 ++++++++++++-- openbox/client.h | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/openbox/client.c b/openbox/client.c index 6de12d19..bc218af0 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -2289,7 +2289,7 @@ void client_set_desktop_recursive(ObClient *self, 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 @@ void client_activate(ObClient *self, gboolean here) 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 @@ void client_activate(ObClient *self, gboolean here) 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); } diff --git a/openbox/client.h b/openbox/client.h index 0c523deb..ed664c32 100644 --- a/openbox/client.h +++ b/openbox/client.h @@ -451,6 +451,26 @@ void client_activate(ObClient *self, gboolean here); /*! 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 -- 2.39.2