have stacking_restack_request return a bool that says if it did something with TopIf...
authorMikael Magnusson <mikachu@comhem.se>
Fri, 1 Jun 2007 23:20:05 +0000 (23:20 +0000)
committerMikael Magnusson <mikachu@comhem.se>
Fri, 1 Jun 2007 23:20:05 +0000 (23:20 +0000)
openbox/stacking.c
openbox/stacking.h

index ce3befc..481c14b 100644 (file)
@@ -506,7 +506,7 @@ static gboolean stacking_occluded(ObClient *client, ObClient *sibling)
     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 @@ static gboolean stacking_occludes(ObClient *client, ObClient *sibling)
     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 @@ void stacking_restack_request(ObClient *client, ObClient *sibling,
            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 @@ void stacking_restack_request(ObClient *client, ObClient *sibling,
                 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 @@ void stacking_restack_request(ObClient *client, ObClient *sibling,
             stacking_lower(CLIENT_AS_WINDOW(client));
         break;
     }
+    return TRUE;
 }
index eb63873..4a81617 100644 (file)
@@ -67,11 +67,13 @@ void stacking_below(ObWindow *window, ObWindow *below);
   @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