]> Dogcows Code - chaz/openbox/blobdiff - openbox/dock.c
add partial struts tho they arent useful eyt
[chaz/openbox] / openbox / dock.c
index 5d110353fcd84cf3807d09c5fc5faa4937edfad9..07f2dbe0a22a5f72cf203d224516857fe053161c 100644 (file)
@@ -1,3 +1,4 @@
+#include "debug.h"
 #include "dock.h"
 #include "screen.h"
 #include "prop.h"
 
 static ObDock *dock;
 
-Strut dock_strut;
+StrutPartial dock_strut;
 
 void dock_startup()
 {
     XSetWindowAttributes attrib;
 
-    STRUT_SET(dock_strut, 0, 0, 0, 0);
+    STRUT_PARTIAL_SET(dock_strut, 0, 0, 0, 0,
+                      0, 0, 0, 0, 0, 0, 0, 0);
 
     dock = g_new0(ObDock, 1);
     dock->obwin.type = Window_Dock;
@@ -93,7 +95,7 @@ void dock_add(Window win, XWMHints *wmhints)
       member set the root window, and one set to the client, but both get
       handled and need to be ignored.
     */
-    if (ob_state == OB_STATE_STARTING)
+    if (ob_state() == OB_STATE_STARTING)
        app->ignore_unmaps += 2;
 
     if (app->win != app->icon_win) {
@@ -115,7 +117,7 @@ void dock_add(Window win, XWMHints *wmhints)
 
     g_hash_table_insert(window_map, &app->icon_win, app);
 
-    g_message("Managed Dock App: 0x%lx (%s)", app->icon_win, app->class);
+    ob_debug("Managed Dock App: 0x%lx (%s)\n", app->icon_win, app->class);
 }
 
 void dock_remove_all()
@@ -141,7 +143,7 @@ void dock_remove(ObDockApp *app, gboolean reparent)
     dock->dock_apps = g_list_remove(dock->dock_apps, app);
     dock_configure();
 
-    g_message("Unmanaged Dock App: 0x%lx (%s)", app->icon_win, app->class);
+    ob_debug("Unmanaged Dock App: 0x%lx (%s)\n", app->icon_win, app->class);
 
     g_free(app->name);
     g_free(app->class);
@@ -337,7 +339,8 @@ void dock_configure()
     }
 
     if (!config_dock_floating && config_dock_hide) {
-        strw = strh = ob_rr_theme->bwidth;
+        strw = ob_rr_theme->bwidth;
+        strh = ob_rr_theme->bwidth;
     } else {
         strw = dock->w;
         strh =  dock->h;
@@ -345,58 +348,83 @@ void dock_configure()
 
     /* set the strut */
     if (config_dock_floating) {
-        STRUT_SET(dock_strut, 0, 0, 0, 0);
+        STRUT_PARTIAL_SET(dock_strut, 0, 0, 0, 0,
+                          0, 0, 0, 0, 0, 0, 0, 0);
     } else {
         switch (config_dock_pos) {
         case OB_DIRECTION_NORTHWEST:
             switch (config_dock_orient) {
             case OB_ORIENTATION_HORZ:
-                STRUT_SET(dock_strut, 0, strh, 0, 0);
+                STRUT_PARTIAL_SET(dock_strut, 0, strh, 0, 0,
+                                  0, 0, dock->x, dock->x + dock->w - 1,
+                                  0, 0, 0, 0);
                 break;
             case OB_ORIENTATION_VERT:
-                STRUT_SET(dock_strut, strw, 0, 0, 0);
+                STRUT_PARTIAL_SET(dock_strut, strw, 0, 0, 0,
+                                  dock->y, dock->y + dock->h - 1,
+                                  0, 0, 0, 0, 0, 0);
                 break;
             }
             break;
         case OB_DIRECTION_NORTH:
-            STRUT_SET(dock_strut, 0, strh, 0, 0);
+            STRUT_PARTIAL_SET(dock_strut, 0, strh, 0, 0,
+                              dock->x, dock->x + dock->w - 1,
+                              0, 0, 0, 0, 0, 0);
             break;
         case OB_DIRECTION_NORTHEAST:
             switch (config_dock_orient) {
             case OB_ORIENTATION_HORZ:
-                STRUT_SET(dock_strut, 0, strh, 0, 0);
+                STRUT_PARTIAL_SET(dock_strut, 0, strh, 0, 0,
+                                  0, 0, dock->x, dock->x + dock->w -1,
+                                  0, 0, 0, 0);
                 break;
             case OB_ORIENTATION_VERT:
-                STRUT_SET(dock_strut, 0, 0, strw, 0);
+                STRUT_PARTIAL_SET(dock_strut, 0, 0, strw, 0,
+                                  0, 0, 0, 0,
+                                  dock->y, dock->y + dock->h - 1, 0, 0);
                 break;
             }
             break;
         case OB_DIRECTION_WEST:
-            STRUT_SET(dock_strut, strw, 0, 0, 0);
+            STRUT_PARTIAL_SET(dock_strut, strw, 0, 0, 0,
+                              dock->y, dock->y + dock->h - 1,
+                              0, 0, 0, 0, 0, 0);
             break;
         case OB_DIRECTION_EAST:
-            STRUT_SET(dock_strut, 0, 0, strw, 0);
+            STRUT_PARTIAL_SET(dock_strut, 0, 0, strw, 0,
+                              0, 0, 0, 0,
+                              dock->y, dock->y + dock->h - 1, 0, 0);
             break;
         case OB_DIRECTION_SOUTHWEST:
             switch (config_dock_orient) {
             case OB_ORIENTATION_HORZ:
-                STRUT_SET(dock_strut, 0, 0, 0, strh);
+                STRUT_PARTIAL_SET(dock_strut, 0, 0, 0, strh,
+                                  0, 0, 0, 0, 0, 0,
+                                  dock->x, dock->x + dock->w - 1);
                 break;
             case OB_ORIENTATION_VERT:
-                STRUT_SET(dock_strut, strw, 0, 0, 0);
+                STRUT_PARTIAL_SET(dock_strut, strw, 0, 0, 0,
+                                  dock->y, dock->y + dock->h - 1,
+                                  0, 0, 0, 0, 0, 0);
                 break;
             }
             break;
         case OB_DIRECTION_SOUTH:
-            STRUT_SET(dock_strut, 0, 0, 0, strh);
+            STRUT_PARTIAL_SET(dock_strut, 0, 0, 0, strh,
+                              0, 0, 0, 0, 0, 0,
+                              dock->x, dock->x + dock->w - 1);
             break;
         case OB_DIRECTION_SOUTHEAST:
             switch (config_dock_orient) {
             case OB_ORIENTATION_HORZ:
-                STRUT_SET(dock_strut, 0, 0, 0, strh);
+                STRUT_PARTIAL_SET(dock_strut, 0, 0, 0, strh,
+                                  0, 0, 0, 0, 0, 0,
+                                  dock->x, dock->x + dock->w - 1);
                 break;
             case OB_ORIENTATION_VERT:
-                STRUT_SET(dock_strut, 0, 0, strw, 0);
+                STRUT_PARTIAL_SET(dock_strut, 0, 0, strw, 0,
+                                  0, 0, 0, 0,
+                                  dock->y, dock->y + dock->h - 1, 0, 0);
                 break;
             }
             break;
@@ -456,7 +484,7 @@ void dock_app_drag(ObDockApp *app, XMotionEvent *e)
 
     /* which dock app are we on top of? */
     stop = FALSE;
-    for (it = dock->dock_apps; it && !stop; it = it->next) {
+    for (it = dock->dock_apps; it; it = it->next) {
         over = it->data;
         switch (config_dock_orient) {
         case OB_ORIENTATION_HORZ:
@@ -468,6 +496,8 @@ void dock_app_drag(ObDockApp *app, XMotionEvent *e)
                 stop = TRUE;
             break;
         }
+        /* dont go to it->next! */
+        if (stop) break;
     }
     if (!it || app == over) return;
 
This page took 0.025205 seconds and 4 git commands to generate.