]> Dogcows Code - chaz/openbox/commitdiff
give the dock a strut and use it
authorDana Jansens <danakj@orodu.net>
Fri, 16 May 2003 19:15:56 +0000 (19:15 +0000)
committerDana Jansens <danakj@orodu.net>
Fri, 16 May 2003 19:15:56 +0000 (19:15 +0000)
openbox/dock.c
openbox/dock.h
openbox/screen.c

index b25c7e49b423313b7e923594f450600a983c78d3..02c6d8e7a8f80388e178e9d1df5030cfa5ee3a31 100644 (file)
 
 static Dock *dock;
 
+Strut dock_strut;
+
 void dock_startup()
 {
     XSetWindowAttributes attrib;
     int i;
 
+    STRUT_SET(dock_strut, 0, 0, 0, 0);
+
     dock = g_new0(struct Dock, 1);
     dock->obwin.type = Window_Dock;
 
@@ -273,6 +277,49 @@ void dock_configure()
         }    
     }
 
+    /* set the strut */
+    switch (config_dock_pos) {
+    case DockPos_Floating:
+        STRUT_SET(dock_strut, 0, 0, 0, 0);
+        break;
+    case DockPos_TopLeft:
+        if (config_dock_horz)
+            STRUT_SET(dock_strut, 0, dock->h, 0, 0);
+        else
+            STRUT_SET(dock_strut, dock->w, 0, 0, 0);
+        break;
+    case DockPos_Top:
+        STRUT_SET(dock_strut, 0, dock->h, 0, 0);
+        break;
+    case DockPos_TopRight:
+        if (config_dock_horz)
+            STRUT_SET(dock_strut, 0, dock->h, 0, 0);
+        else
+            STRUT_SET(dock_strut, 0, 0, dock->w, 0);
+        break;
+    case DockPos_Left:
+        STRUT_SET(dock_strut, dock->w, 0, 0, 0);
+        break;
+    case DockPos_Right:
+        STRUT_SET(dock_strut, 0, 0, dock->w, 0);
+        break;
+    case DockPos_BottomLeft:
+        if (config_dock_horz)
+            STRUT_SET(dock_strut, 0, 0, 0, dock->h);
+        else
+            STRUT_SET(dock_strut, dock->w, 0, 0, 0);
+        break;
+    case DockPos_Bottom:
+        STRUT_SET(dock_strut, 0, 0, 0, dock->h);
+        break;
+    case DockPos_BottomRight:
+        if (config_dock_horz)
+            STRUT_SET(dock_strut, 0, 0, 0, dock->h);
+        else
+            STRUT_SET(dock_strut, 0, 0, dock->w, 0);
+        break;
+    }
+
     /* not used for actually sizing shit */
     dock->w -= theme_bwidth * 2;
     dock->h -= theme_bwidth * 2;
@@ -290,6 +337,8 @@ void dock_configure()
     /* but they are useful outside of this function! */
     dock->w += theme_bwidth * 2;
     dock->h += theme_bwidth * 2;
+
+    screen_update_struts();
 }
 
 void dock_app_configure(DockApp *app, int w, int h)
index fdfaaf05d249131942d203ecf32caec63fe7eaeb..14411499a165ddb7699057e6ed9b0ff88af03cd5 100644 (file)
@@ -2,9 +2,10 @@
 #define __dock_h
 
 #include "timer.h"
-#include "render/render.h"
 #include "window.h"
 #include "stacking.h"
+#include "geom.h"
+#include "render/render.h"
 
 #include <glib.h>
 #include <X11/Xlib.h>
@@ -51,6 +52,8 @@ typedef struct DockApp {
     int h;
 } DockApp;
 
+extern Strut dock_strut;
+
 void dock_startup();
 void dock_shutdown();
 
index 0c80827faf158f901a6ed1f9ae2e8e6430d3874c..fd6244665cc99cc8827a90a3ff1745386dec543d 100644 (file)
@@ -497,6 +497,10 @@ void screen_update_struts()
        /* apply to the 'all desktops' strut */
        STRUT_ADD(strut[screen_num_desktops], c->strut);
     }
+
+    for (i = 0; i < screen_num_desktops; ++i)
+        STRUT_ADD(strut[i], dock_strut);
+
     screen_update_area();
 }
 
This page took 0.025431 seconds and 4 git commands to generate.