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
2 files changed,
13 insertions(+),
7 deletions(-)
M
openbox/stacking.c
→
openbox/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.h
→
openbox/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