self->innerright = createWindow(self->window, NULL, mask, &attrib);
self->innerbottom = createWindow(self->window, NULL, mask, &attrib);
+ self->innerblb = createWindow(self->innerbottom, NULL, mask, &attrib);
+ self->innerbrb = createWindow(self->innerbottom, NULL, mask, &attrib);
+ self->innerbll = createWindow(self->innerleft, NULL, mask, &attrib);
+ self->innerbrr = createWindow(self->innerright, NULL, mask, &attrib);
+
self->title = createWindow(self->window, NULL, mask, &attrib);
self->titleleft = createWindow(self->window, NULL, mask, &attrib);
self->titletop = createWindow(self->window, NULL, mask, &attrib);
STRUT_SET(self->size,
self->cbwidth_l + (!self->max_horz ? self->bwidth : 0),
- self->cbwidth_t + self->bwidth,
+ self->cbwidth_t +
+ (!self->max_horz || !self->max_vert ||
+ !self->client->undecorated ? self->bwidth : 0),
self->cbwidth_r + (!self->max_horz ? self->bwidth : 0),
self->cbwidth_b +
- (!self->max_horz || !self->max_vert ? self->bwidth : 0));
+ (!self->max_horz || !self->max_vert ? self->bwidth : 0));
if (self->decorations & OB_FRAME_DECOR_TITLEBAR)
self->size.top += ob_rr_theme->title_height + self->bwidth;
/* position/size and map/unmap all the windows */
if (!fake) {
+ gint innercornerheight =
+ ob_rr_theme->grip_width - self->size.bottom;
+
if (self->cbwidth_l) {
XMoveResizeWindow(ob_display, self->innerleft,
self->size.left - self->cbwidth_l,
} else
XUnmapWindow(ob_display, self->innerleft);
+ if (self->cbwidth_l && innercornerheight > 0) {
+ XMoveResizeWindow(ob_display, self->innerbll,
+ 0,
+ self->client->area.height -
+ (ob_rr_theme->grip_width -
+ self->size.bottom),
+ self->cbwidth_l,
+ ob_rr_theme->grip_width - self->size.bottom);
+
+ XMapWindow(ob_display, self->innerbll);
+ } else
+ XUnmapWindow(ob_display, self->innerbll);
+
if (self->cbwidth_r) {
XMoveResizeWindow(ob_display, self->innerright,
self->size.left + self->client->area.width,
} else
XUnmapWindow(ob_display, self->innerright);
+ if (self->cbwidth_r && innercornerheight > 0) {
+ XMoveResizeWindow(ob_display, self->innerbrr,
+ 0,
+ self->client->area.height -
+ (ob_rr_theme->grip_width -
+ self->size.bottom),
+ self->cbwidth_r,
+ ob_rr_theme->grip_width - self->size.bottom);
+
+ XMapWindow(ob_display, self->innerbrr);
+ } else
+ XUnmapWindow(ob_display, self->innerbrr);
+
if (self->cbwidth_t) {
XMoveResizeWindow(ob_display, self->innertop,
self->size.left - self->cbwidth_l,
self->cbwidth_l + self->cbwidth_r,
self->cbwidth_b);
+ XMoveResizeWindow(ob_display, self->innerblb,
+ 0, 0,
+ ob_rr_theme->grip_width + self->bwidth,
+ self->cbwidth_b);
+ XMoveResizeWindow(ob_display, self->innerbrb,
+ self->client->area.width +
+ self->cbwidth_l + self->cbwidth_r -
+ (ob_rr_theme->grip_width + self->bwidth),
+ 0,
+ ob_rr_theme->grip_width + self->bwidth,
+ self->cbwidth_b);
+
XMapWindow(ob_display, self->innerbottom);
- } else
+ XMapWindow(ob_display, self->innerblb);
+ XMapWindow(ob_display, self->innerbrb);
+ } else {
XUnmapWindow(ob_display, self->innerbottom);
+ XUnmapWindow(ob_display, self->innerblb);
+ XUnmapWindow(ob_display, self->innerbrb);
+ }
if (self->bwidth) {
gint titlesides;
self->bwidth);
XMoveResizeWindow(ob_display, self->rgripbottom,
self->size.left + self->client->area.width +
- self->size.right - self->bwidth - sidebwidth -
+ self->size.right - self->bwidth - sidebwidth-
ob_rr_theme->grip_width,
self->size.top + self->client->area.height +
self->size.bottom - self->bwidth,
XChangeWindowAttributes(ob_display, self->lgripleft, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->lgriptop, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->lgripbottom, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerbll, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerblb, CWCursor, &a);
a.cursor = ob_cursor(r ? OB_CURSOR_SOUTHEAST : OB_CURSOR_NONE);
XChangeWindowAttributes(ob_display, self->rgrip, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->handleright, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->rgripright, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->rgriptop, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->rgripbottom, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerbrr, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->innerbrb, CWCursor, &a);
}
}
g_hash_table_insert(window_map, &self->innertop, self->client);
g_hash_table_insert(window_map, &self->innerright, self->client);
g_hash_table_insert(window_map, &self->innerbottom, self->client);
+ g_hash_table_insert(window_map, &self->innerblb, self->client);
+ g_hash_table_insert(window_map, &self->innerbll, self->client);
+ g_hash_table_insert(window_map, &self->innerbrb, self->client);
+ g_hash_table_insert(window_map, &self->innerbrr, self->client);
g_hash_table_insert(window_map, &self->title, self->client);
g_hash_table_insert(window_map, &self->label, self->client);
g_hash_table_insert(window_map, &self->max, self->client);
g_hash_table_remove(window_map, &self->innertop);
g_hash_table_remove(window_map, &self->innerright);
g_hash_table_remove(window_map, &self->innerbottom);
+ g_hash_table_remove(window_map, &self->innerblb);
+ g_hash_table_remove(window_map, &self->innerbll);
+ g_hash_table_remove(window_map, &self->innerbrb);
+ g_hash_table_remove(window_map, &self->innerbrr);
g_hash_table_remove(window_map, &self->title);
g_hash_table_remove(window_map, &self->label);
g_hash_table_remove(window_map, &self->max);
if (win == self->lgripbottom) return OB_FRAME_CONTEXT_BLCORNER;
if (win == self->handleright) return OB_FRAME_CONTEXT_BRCORNER;
if (win == self->rgrip) return OB_FRAME_CONTEXT_BRCORNER;
- if (win == self->rgripright) return OB_FRAME_CONTEXT_BLCORNER;
- if (win == self->rgriptop) return OB_FRAME_CONTEXT_BLCORNER;
- if (win == self->rgripbottom) return OB_FRAME_CONTEXT_BLCORNER;
+ if (win == self->rgripright) return OB_FRAME_CONTEXT_BRCORNER;
+ if (win == self->rgriptop) return OB_FRAME_CONTEXT_BRCORNER;
+ if (win == self->rgripbottom) return OB_FRAME_CONTEXT_BRCORNER;
if (win == self->title) return OB_FRAME_CONTEXT_TITLEBAR;
if (win == self->titlebottom) return OB_FRAME_CONTEXT_TITLEBAR;
if (win == self->titleleft) return OB_FRAME_CONTEXT_TLCORNER;
if (win == self->innerleft) return OB_FRAME_CONTEXT_LEFT;
if (win == self->innerbottom) return OB_FRAME_CONTEXT_BOTTOM;
if (win == self->innerright) return OB_FRAME_CONTEXT_RIGHT;
+ if (win == self->innerbll) return OB_FRAME_CONTEXT_BLCORNER;
+ if (win == self->innerblb) return OB_FRAME_CONTEXT_BLCORNER;
+ if (win == self->innerbrr) return OB_FRAME_CONTEXT_BRCORNER;
+ if (win == self->innerbrb) return OB_FRAME_CONTEXT_BRCORNER;
if (win == self->max) return OB_FRAME_CONTEXT_MAXIMIZE;
if (win == self->iconify) return OB_FRAME_CONTEXT_ICONIFY;
if (win == self->close) return OB_FRAME_CONTEXT_CLOSE;