]> Dogcows Code - chaz/openbox/blobdiff - openbox/action.c
maybe fix transients placed offscreen under certain conditions
[chaz/openbox] / openbox / action.c
index e98677b9ad44ef8fe0cf4a199d091642745f3b1c..a30e604715d0581afc60b887123e57fd39f0af7b 100644 (file)
@@ -29,6 +29,7 @@
 #include "grab.h"
 #include "keyboard.h"
 #include "event.h"
+#include "dock.h"
 #include "config.h"
 #include "mainloop.h"
 
@@ -1071,7 +1072,8 @@ void action_focus(union ActionData *data)
 
 void action_unfocus (union ActionData *data)
 {
-    client_unfocus(data->client.any.c);
+    if (data->client.any.c == focus_client);
+        focus_fallback(OB_FOCUS_FALLBACK_UNFOCUSING);
 }
 
 void action_iconify(union ActionData *data)
@@ -1093,17 +1095,19 @@ void action_raiselower(union ActionData *data)
     gboolean raise = FALSE;
 
     for (it = stacking_list; it; it = g_list_next(it)) {
-        ObClient *cit = it->data;
-
-        if (cit == c) break;
-        if (client_normal(cit) == client_normal(c) &&
-            cit->layer == c->layer &&
-            cit->frame->visible &&
-            !client_search_transient(c, cit))
-        {
-            if (RECT_INTERSECTS_RECT(cit->frame->area, c->frame->area)) {
-                raise = TRUE;
-                break;
+        if (WINDOW_IS_CLIENT(it->data)) {
+            ObClient *cit = it->data;
+
+            if (cit == c) break;
+            if (client_normal(cit) == client_normal(c) &&
+                    cit->layer == c->layer &&
+                    cit->frame->visible &&
+                    !client_search_transient(c, cit))
+            {
+                if (RECT_INTERSECTS_RECT(cit->frame->area, c->frame->area)) {
+                    raise = TRUE;
+                    break;
+                }
             }
         }
     }
This page took 0.023735 seconds and 4 git commands to generate.