num = 0;
if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
- xrect[0].x = -ob_rr_theme->fbwidth;
- xrect[0].y = -ob_rr_theme->fbwidth;
- xrect[0].width = self->width + self->bwidth * 2;
+ xrect[0].x = 0;
+ xrect[0].y = 0;
+ xrect[0].width = self->area.width;
xrect[0].height = ob_rr_theme->title_height +
- self->bwidth * 2;
+ self->bwidth + self->rbwidth;
++num;
}
- if (self->decorations & OB_FRAME_DECOR_HANDLE) {
- xrect[1].x = -ob_rr_theme->fbwidth;
+ if (self->decorations & OB_FRAME_DECOR_HANDLE &&
+ ob_rr_theme->handle_height > 0)
+ {
+ xrect[1].x = 0;
xrect[1].y = FRAME_HANDLE_Y(self);
- xrect[1].width = self->width + self->bwidth * 2;
+ xrect[1].width = self->area.width;
xrect[1].height = ob_rr_theme->handle_height +
self->bwidth * 2;
++num;
self->bwidth = self->cbwidth_x = self->cbwidth_y = 0;
}
self->rbwidth = self->bwidth;
+ self->leftb = self->rightb = TRUE;
- if (self->max_horz)
+ if (self->max_horz) {
+ self->leftb = self->rightb = FALSE;
self->cbwidth_x = 0;
+ }
self->width = self->client->area.width + self->cbwidth_x * 2;
self->width = MAX(self->width, 1); /* no lower than 1 */
STRUT_SET(self->size,
- self->cbwidth_x + self->bwidth,
+ self->cbwidth_x + (self->leftb ? self->bwidth : 0),
self->cbwidth_y + self->bwidth,
- self->cbwidth_x + self->bwidth,
+ self->cbwidth_x + (self->rightb ? self->bwidth : 0),
self->cbwidth_y + self->bwidth);
if (self->decorations & OB_FRAME_DECOR_TITLEBAR)
0,
ob_rr_theme->grip_width + self->bwidth,
self->bwidth);
+
XMoveResizeWindow(ob_display, self->titleleft,
0, self->bwidth,
self->bwidth,
- ob_rr_theme->grip_width);
+ (self->leftb ?
+ ob_rr_theme->grip_width :
+ self->size.top - self->bwidth));
XMoveResizeWindow(ob_display, self->titleright,
self->client->area.width +
self->cbwidth_x * 2 + self->bwidth,
self->bwidth,
self->bwidth,
- ob_rr_theme->grip_width);
+ (self->rightb ?
+ ob_rr_theme->grip_width :
+ self->size.top - self->bwidth));
XMapWindow(ob_display, self->titletop);
XMapWindow(ob_display, self->titletopleft);
ob_rr_theme->title_height + self->bwidth,
self->client->area.width +
self->cbwidth_x * 2,
- self->bwidth);
+ self->rbwidth);
XMapWindow(ob_display, self->titlebottom);
} else
XUnmapWindow(ob_display, self->titlebottom);
} else {
+ XUnmapWindow(ob_display, self->titlebottom);
+
XUnmapWindow(ob_display, self->titletop);
XUnmapWindow(ob_display, self->titletopleft);
XUnmapWindow(ob_display, self->titletopright);
0,
self->size.top + self->client->area.height +
self->size.bottom -
- ob_rr_theme->grip_width,
+ (self->leftb ?
+ ob_rr_theme->grip_width :
+ self->size.bottom),
self->bwidth,
- ob_rr_theme->grip_width);
+ (self->leftb ?
+ ob_rr_theme->grip_width :
+ self->size.bottom));
XMoveResizeWindow(ob_display, self->rgripright,
self->size.left + self->client->area.width +
self->size.right - self->bwidth,
self->size.top + self->client->area.height +
self->size.bottom -
- ob_rr_theme->grip_width,
+ (self->leftb ?
+ ob_rr_theme->grip_width :
+ self->size.bottom),
self->bwidth,
- ob_rr_theme->grip_width);
+ (self->rightb ?
+ ob_rr_theme->grip_width :
+ self->size.bottom));
XMoveResizeWindow(ob_display, self->lgripbottom,
self->bwidth,
XUnmapWindow(ob_display, self->lgriptop);
XUnmapWindow(ob_display, self->rgriptop);
}
- } else
+ } else {
+ XUnmapWindow(ob_display, self->handleleft);
+ XUnmapWindow(ob_display, self->handleright);
+ XUnmapWindow(ob_display, self->lgriptop);
+ XUnmapWindow(ob_display, self->rgriptop);
+
XUnmapWindow(ob_display, self->handletop);
+ }
} else {
+ XUnmapWindow(ob_display, self->handleleft);
+ XUnmapWindow(ob_display, self->handleright);
+ XUnmapWindow(ob_display, self->lgriptop);
+ XUnmapWindow(ob_display, self->rgriptop);
+
+ XUnmapWindow(ob_display, self->handletop);
+
XUnmapWindow(ob_display, self->handlebottom);
XUnmapWindow(ob_display, self->lgripleft);
XUnmapWindow(ob_display, self->rgripright);
XUnmapWindow(ob_display, self->lgrip);
XUnmapWindow(ob_display, self->rgrip);
}
- } else
+ } else {
+ XUnmapWindow(ob_display, self->lgrip);
+ XUnmapWindow(ob_display, self->rgrip);
+
XUnmapWindow(ob_display, self->handle);
+ }
- if (self->bwidth && !self->max_horz) {
+ if (self->bwidth && self->leftb) {
XMoveResizeWindow(ob_display, self->left,
0,
self->bwidth + ob_rr_theme->grip_width,
self->client->area.height +
self->size.top + self->size.bottom -
ob_rr_theme->grip_width * 2);
+
+ XMapWindow(ob_display, self->left);
+ } else
+ XUnmapWindow(ob_display, self->left);
+
+ if (self->bwidth && self->rightb) {
XMoveResizeWindow(ob_display, self->right,
self->client->area.width +
self->cbwidth_x * 2 + self->bwidth,
self->size.top + self->size.bottom -
ob_rr_theme->grip_width * 2);
- XMapWindow(ob_display, self->left);
XMapWindow(ob_display, self->right);
- } else {
- XUnmapWindow(ob_display, self->left);
+ } else
XUnmapWindow(ob_display, self->right);
- }
/* move and resize the inner border window which contains the plate
*/
0,
self->size.top - self->cbwidth_y,
self->client->area.width +
- self->cbwidth_x * 2 + self->bwidth * 2,
+ self->cbwidth_x * 2 +
+ (self->leftb ? self->bwidth : 0) +
+ (self->rightb ? self->bwidth : 0),
self->client->area.height +
self->cbwidth_y * 2);
/* move the plate */
XMoveWindow(ob_display, self->plate,
- self->bwidth + self->cbwidth_x, self->cbwidth_y);
+ (self->leftb ? self->bwidth : 0) + self->cbwidth_x,
+ self->cbwidth_y);
/* when the client has StaticGravity, it likes to move around. */
XMoveWindow(ob_display, self->client->window, 0, 0);
/* start where the frame is supposed to be */
x = self->area.x;
y = self->area.y;
- w = self->area.width - self->bwidth * 2;
- h = self->area.height - self->bwidth * 2;
+ w = self->area.width;
+ h = self->area.height;
} else {
/* start at the icon */
x = iconx;
XMoveResizeWindow(ob_display, self->window,
self->area.x, self->area.y,
- self->area.width - self->bwidth * 2,
- self->area.height - self->bwidth * 2);
+ self->area.width, self->area.height);
XFlush(ob_display);
}