RrVisual(ob_rr_inst),
CWOverrideRedirect | CWEventMask,
&attrib);
- dock->a_frame = RrAppearanceCopy(theme_a_unfocused_title);
- XSetWindowBorder(ob_display, dock->frame, theme_b_color->pixel);
- XSetWindowBorderWidth(ob_display, dock->frame, theme_bwidth);
+ dock->a_frame = RrAppearanceCopy(ob_rr_theme->a_unfocused_title);
+ XSetWindowBorder(ob_display, dock->frame, ob_rr_theme->b_color->pixel);
+ XSetWindowBorderWidth(ob_display, dock->frame, ob_rr_theme->bwidth);
g_hash_table_insert(window_map, &dock->frame, dock);
stacking_add(DOCK_AS_WINDOW(dock));
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) {
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);
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) {
}
}
+ spot = (config_dock_horz ? minw : minh) / 2;
+
/* position the apps */
for (it = dock->dock_apps; it; it = it->next) {
struct DockApp *app = it->data;
}
/* used for calculating offsets */
- dock->w += theme_bwidth * 2;
- dock->h += theme_bwidth * 2;
+ dock->w += ob_rr_theme->bwidth * 2;
+ dock->h += ob_rr_theme->bwidth * 2;
+
+ a = screen_physical_area();
/* calculate position */
switch (config_dock_pos) {
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;
}
break;
case DockPos_TopLeft:
if (config_dock_horz)
- dock->y -= dock->h - theme_bwidth;
+ dock->y -= dock->h - ob_rr_theme->bwidth;
else
- dock->x -= dock->w - theme_bwidth;
+ dock->x -= dock->w - ob_rr_theme->bwidth;
break;
case DockPos_Top:
- dock->y -= dock->h - theme_bwidth;
+ dock->y -= dock->h - ob_rr_theme->bwidth;
break;
case DockPos_TopRight:
if (config_dock_horz)
- dock->y -= dock->h - theme_bwidth;
+ dock->y -= dock->h - ob_rr_theme->bwidth;
else
- dock->x += dock->w - theme_bwidth;
+ dock->x += dock->w - ob_rr_theme->bwidth;
break;
case DockPos_Left:
- dock->x -= dock->w - theme_bwidth;
+ dock->x -= dock->w - ob_rr_theme->bwidth;
break;
case DockPos_Right:
- dock->x += dock->w - theme_bwidth;
+ dock->x += dock->w - ob_rr_theme->bwidth;
break;
case DockPos_BottomLeft:
if (config_dock_horz)
- dock->y += dock->h - theme_bwidth;
+ dock->y += dock->h - ob_rr_theme->bwidth;
else
- dock->x -= dock->w - theme_bwidth;
+ dock->x -= dock->w - ob_rr_theme->bwidth;
break;
case DockPos_Bottom:
- dock->y += dock->h - theme_bwidth;
+ dock->y += dock->h - ob_rr_theme->bwidth;
break;
case DockPos_BottomRight:
if (config_dock_horz)
- dock->y += dock->h - theme_bwidth;
+ dock->y += dock->h - ob_rr_theme->bwidth;
else
- dock->x += dock->w - theme_bwidth;
+ dock->x += dock->w - ob_rr_theme->bwidth;
break;
}
}
+ 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:
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 -= theme_bwidth * 2;
- dock->h -= theme_bwidth * 2;
+ dock->w -= ob_rr_theme->bwidth * 2;
+ dock->h -= ob_rr_theme->bwidth * 2;
if (dock->w > 0 && dock->h > 0) {
XMoveResizeWindow(ob_display, dock->frame,
XUnmapWindow(ob_display, dock->frame);
/* but they are useful outside of this function! */
- dock->w += theme_bwidth * 2;
- dock->h += theme_bwidth * 2;
+ 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)