move the code to find the window under the pointer out of focus.c to client.c
authorDana Jansens <danakj@orodu.net>
Sun, 21 Sep 2003 21:25:23 +0000 (21:25 +0000)
committerDana Jansens <danakj@orodu.net>
Sun, 21 Sep 2003 21:25:23 +0000 (21:25 +0000)
openbox/client.c
openbox/client.h
openbox/focus.c

index 3d51a78..c4b106b 100644 (file)
@@ -3017,3 +3017,24 @@ int client_directional_edge_search(ObClient *c, ObDirection dir)
     }
     return dest;
 }
+
+ObClient* client_under_pointer()
+{
+    int x, y;
+    GList *it;
+    ObClient *ret = NULL;
+
+    if (screen_pointer_pos(&x, &y)) {
+        for (it = stacking_list; it != NULL; it = it->next) {
+            if (WINDOW_IS_CLIENT(it->data)) {
+                ObClient *c = WINDOW_AS_CLIENT(it->data);
+                if (c->desktop == screen_desktop &&
+                    RECT_CONTAINS(c->frame->area, x, y)) {
+                    ret = c;
+                    break;
+                }
+            }
+        }
+    }
+    return ret;
+}
index 69b09d5..e3769ea 100644 (file)
@@ -519,4 +519,6 @@ guint client_monitor(ObClient *self);
 
 void client_update_sm_client_id(ObClient *self);
 
+ObClient* client_under_pointer();
+
 #endif
index 523c7b5..2203691 100644 (file)
@@ -119,23 +119,10 @@ void focus_set_client(ObClient *client)
 
 static gboolean focus_under_pointer()
 {
-    int x, y;
-    GList *it;
+    ObClient *c;
 
-    if (screen_pointer_pos(&x, &y)) {
-        for (it = stacking_list; it != NULL; it = it->next) {
-            if (WINDOW_IS_CLIENT(it->data)) {
-                ObClient *c = WINDOW_AS_CLIENT(it->data);
-                if (c->desktop == screen_desktop &&
-                    RECT_CONTAINS(c->frame->area, x, y))
-                    break;
-            }
-        }
-        if (it != NULL) {
-            g_assert(WINDOW_IS_CLIENT(it->data));
-            return client_normal(it->data) && client_focus(it->data);
-        }
-    }
+    if ((c = client_under_pointer()))
+        return client_normal(c) && client_focus(c);
     return FALSE;
 }