all repos — openbox @ 0f677834e253dfd18a246c8811bf4a4e364d5e0e

openbox fork - make it a bit more like ryudo

have stacking_restack_request return a bool that says if it did something with TopIf/BottomIf (other cases always return true)
Mikael Magnusson mikachu@comhem.se
commit

0f677834e253dfd18a246c8811bf4a4e364d5e0e

parent

062d4d435dec216557708cdf6c61ec26f0b66719

2 files changed, 13 insertions(+), 7 deletions(-)

jump to
M openbox/stacking.copenbox/stacking.c

@@ -506,7 +506,7 @@ }

return occluded; } -/*! Returns TRUE if client is occludes the sibling. If sibling is NULL it tries +/*! Returns TRUE if client occludes the sibling. If sibling is NULL it tries against all other clients. */ static gboolean stacking_occludes(ObClient *client, ObClient *sibling)

@@ -545,8 +545,8 @@ }

return occludes; } -void stacking_restack_request(ObClient *client, ObClient *sibling, - gint detail, gboolean activate) +gboolean stacking_restack_request(ObClient *client, ObClient *sibling, + gint detail, gboolean activate) { switch (detail) { case Below:

@@ -563,6 +563,8 @@ /* if this client occludes sibling (or anything if NULL), then

lower it to the bottom */ if (stacking_occludes(client, sibling)) stacking_lower(CLIENT_AS_WINDOW(client)); + else + return FALSE; break; case Above: ob_debug("Restack request Above for client %s sibling %s\n",

@@ -584,7 +586,8 @@ for this */

client_activate(client, FALSE, TRUE); else stacking_raise(CLIENT_AS_WINDOW(client)); - } + } else + return FALSE; break; case Opposite: ob_debug("Restack request Opposite for client %s sibling "

@@ -602,4 +605,5 @@ else if (stacking_occludes(client, sibling))

stacking_lower(CLIENT_AS_WINDOW(client)); break; } + return TRUE; }
M openbox/stacking.hopenbox/stacking.h

@@ -67,11 +67,13 @@ windows

@param detail One of Above, Below, TopIf, BottomIf, Opposite @param activate If TRUE, and if the window is going to be raised, it will be activated instead + @return false if given TopIf or BottomIf and no action was taken, + true otherwise See http://tronche.com/gui/x/xlib/window/configure.html for details on how each detail works with and without a sibling. */ -void stacking_restack_request(struct _ObClient *client, - struct _ObClient *sibling, - gint detail, gboolean activate); +gboolean stacking_restack_request(struct _ObClient *client, + struct _ObClient *sibling, + gint detail, gboolean activate); #endif