]> Dogcows Code - chaz/openbox/blobdiff - openbox/dock.c
add misc.h with some standard enumerations with proper prefixing and capitalizations.
[chaz/openbox] / openbox / dock.c
index 3dda174dbee21e2aeb0feb9e8af97d2dfc433c8e..08f651390da225d0064c627a268d2a1394ec0806 100644 (file)
@@ -91,7 +91,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 == State_Starting)
+    if (ob_state == OB_STATE_STARTING)
        app->ignore_unmaps += 2;
 
     if (app->win != app->icon_win) {
@@ -109,7 +109,7 @@ void dock_add(Window win, XWMHints *wmhints)
 
     grab_button_full(2, 0, app->icon_win,
                      ButtonPressMask | ButtonReleaseMask | ButtonMotionMask,
-                     GrabModeAsync, ob_cursors.move);
+                     GrabModeAsync, OB_CURSOR_MOVE);
 
     g_hash_table_insert(window_map, &app->icon_win, app);
 
@@ -150,8 +150,13 @@ void dock_configure()
     GList *it;
     int spot;
     int gravity;
+    int minw, minh;
+    int strw, strh;
+    Rect *a;
 
-    dock->w = dock->h = spot = 0;
+    RrMinsize(dock->a_frame, &minw, &minh);
+
+    dock->w = dock->h = 0;
 
     /* get the size */
     for (it = dock->dock_apps; it; it = it->next) {
@@ -165,6 +170,8 @@ void dock_configure()
         }
     }
 
+    spot = (config_dock_horz ? minw : minh) / 2;
+
     /* position the apps */
     for (it = dock->dock_apps; it; it = it->next) {
         struct DockApp *app = it->data;
@@ -185,6 +192,8 @@ void dock_configure()
     dock->w += ob_rr_theme->bwidth * 2;
     dock->h += ob_rr_theme->bwidth * 2;
 
+    a = screen_physical_area();
+
     /* calculate position */
     switch (config_dock_pos) {
     case DockPos_Floating:
@@ -198,38 +207,38 @@ void dock_configure()
         gravity = NorthWestGravity;
         break;
     case DockPos_Top:
-        dock->x = screen_physical_size.width / 2;
+        dock->x = a->width / 2;
         dock->y = 0;
         gravity = NorthGravity;
         break;
     case DockPos_TopRight:
-        dock->x = screen_physical_size.width;
+        dock->x = a->width;
         dock->y = 0;
         gravity = NorthEastGravity;
         break;
     case DockPos_Left:
         dock->x = 0;
-        dock->y = screen_physical_size.height / 2;
+        dock->y = a->height / 2;
         gravity = WestGravity;
         break;
     case DockPos_Right:
-        dock->x = screen_physical_size.width;
-        dock->y = screen_physical_size.height / 2;
+        dock->x = a->width;
+        dock->y = a->height / 2;
         gravity = EastGravity;
         break;
     case DockPos_BottomLeft:
         dock->x = 0;
-        dock->y = screen_physical_size.height;
+        dock->y = a->height;
         gravity = SouthWestGravity;
         break;
     case DockPos_Bottom:
-        dock->x = screen_physical_size.width / 2;
-        dock->y = screen_physical_size.height;
+        dock->x = a->width / 2;
+        dock->y = a->height;
         gravity = SouthGravity;
         break;
     case DockPos_BottomRight:
-        dock->x = screen_physical_size.width;
-        dock->y = screen_physical_size.height;
+        dock->x = a->width;
+        dock->y = a->height;
         gravity = SouthEastGravity;
         break;
     }
@@ -302,6 +311,13 @@ void dock_configure()
         }    
     }
 
+    if (config_dock_pos != DockPos_Floating && config_dock_hide) {
+        strw = strh = ob_rr_theme->bwidth;
+    } else {
+        strw = dock->w;
+        strh =  dock->h;
+    }
+
     /* set the strut */
     switch (config_dock_pos) {
     case DockPos_Floating:
@@ -309,42 +325,45 @@ void dock_configure()
         break;
     case DockPos_TopLeft:
         if (config_dock_horz)
-            STRUT_SET(dock_strut, 0, dock->h, 0, 0);
+            STRUT_SET(dock_strut, 0, strh, 0, 0);
         else
-            STRUT_SET(dock_strut, dock->w, 0, 0, 0);
+            STRUT_SET(dock_strut, strw, 0, 0, 0);
         break;
     case DockPos_Top:
-        STRUT_SET(dock_strut, 0, dock->h, 0, 0);
+        STRUT_SET(dock_strut, 0, strh, 0, 0);
         break;
     case DockPos_TopRight:
         if (config_dock_horz)
-            STRUT_SET(dock_strut, 0, dock->h, 0, 0);
+            STRUT_SET(dock_strut, 0, strh, 0, 0);
         else
-            STRUT_SET(dock_strut, 0, 0, dock->w, 0);
+            STRUT_SET(dock_strut, 0, 0, strw, 0);
         break;
     case DockPos_Left:
-        STRUT_SET(dock_strut, dock->w, 0, 0, 0);
+        STRUT_SET(dock_strut, strw, 0, 0, 0);
         break;
     case DockPos_Right:
-        STRUT_SET(dock_strut, 0, 0, dock->w, 0);
+        STRUT_SET(dock_strut, 0, 0, strw, 0);
         break;
     case DockPos_BottomLeft:
         if (config_dock_horz)
-            STRUT_SET(dock_strut, 0, 0, 0, dock->h);
+            STRUT_SET(dock_strut, 0, 0, 0, strh);
         else
-            STRUT_SET(dock_strut, dock->w, 0, 0, 0);
+            STRUT_SET(dock_strut, strw, 0, 0, 0);
         break;
     case DockPos_Bottom:
-        STRUT_SET(dock_strut, 0, 0, 0, dock->h);
+        STRUT_SET(dock_strut, 0, 0, 0, strh);
         break;
     case DockPos_BottomRight:
         if (config_dock_horz)
-            STRUT_SET(dock_strut, 0, 0, 0, dock->h);
+            STRUT_SET(dock_strut, 0, 0, 0, strh);
         else
-            STRUT_SET(dock_strut, 0, 0, dock->w, 0);
+            STRUT_SET(dock_strut, 0, 0, strw, 0);
         break;
     }
 
+    dock->w += minw;
+    dock->h += minh;
+
     /* not used for actually sizing shit */
     dock->w -= ob_rr_theme->bwidth * 2;
     dock->h -= ob_rr_theme->bwidth * 2;
@@ -362,7 +381,7 @@ void dock_configure()
     dock->w += ob_rr_theme->bwidth * 2;
     dock->h += ob_rr_theme->bwidth * 2;
 
-    screen_update_struts();
+    screen_update_areas();
 }
 
 void dock_app_configure(DockApp *app, int w, int h)
This page took 0.027941 seconds and 4 git commands to generate.