if (!self->visible) {
self->visible = TRUE;
XMapWindow(ob_display, self->client->window);
- XMapWindow(ob_display, self->plate);
XMapWindow(ob_display, self->window);
}
}
self->visible = FALSE;
if (!frame_iconify_animating(self))
XUnmapWindow(ob_display, self->window);
- XUnmapWindow(ob_display, self->plate);
/* we unmap the client itself so that we can get MapRequest
events, and because the ICCCM tells us to! */
XUnmapWindow(ob_display, self->client->window);
} else
self->width = self->client->area.width + self->cbwidth_x * 2;
+ /* some elements are sized based of the width, so don't let them have
+ negative values */
+ self->width = MAX(self->width,
+ (ob_rr_theme->grip_width + self->bwidth) * 2) + 1;
+
STRUT_SET(self->size,
self->cbwidth_x + (!self->max_horz ? self->bwidth : 0),
self->cbwidth_y + self->bwidth,
if (self->decorations & OB_FRAME_DECOR_GRIPS) {
XMoveResizeWindow(ob_display, self->topresize,
- ob_rr_theme->grip_width + self->bwidth,
+ ob_rr_theme->grip_width,
0,
self->width - ob_rr_theme->grip_width *2,
ob_rr_theme->paddingy + 1);
- XMoveWindow(ob_display, self->tltresize, self->bwidth, 0);
- XMoveWindow(ob_display, self->tllresize, self->bwidth, 0);
+ XMoveWindow(ob_display, self->tltresize, 0, 0);
+ XMoveWindow(ob_display, self->tllresize, 0, 0);
XMoveWindow(ob_display, self->trtresize,
- self->bwidth + self->width -
- ob_rr_theme->grip_width, 0);
+ self->width - ob_rr_theme->grip_width, 0);
XMoveWindow(ob_display, self->trrresize,
- self->bwidth + self->width -
- ob_rr_theme->paddingx - 1, 0);
+ self->width - ob_rr_theme->paddingx - 1, 0);
XMapWindow(ob_display, self->topresize);
XMapWindow(ob_display, self->tltresize);
if (resized && (self->decorations & OB_FRAME_DECOR_TITLEBAR))
XResizeWindow(ob_display, self->label, self->label_width,
ob_rr_theme->label_height);
+
}
static void frame_adjust_cursors(ObFrame *self)
{
if ((self->functions & OB_CLIENT_FUNC_RESIZE) !=
(self->client->functions & OB_CLIENT_FUNC_RESIZE) ||
- ((self->max_horz && self->max_vert) !=
- (self->client->max_horz && self->client->max_vert)))
+ self->max_horz != self->client->max_horz ||
+ self->max_vert != self->client->max_vert)
{
gboolean r = (self->client->functions & OB_CLIENT_FUNC_RESIZE) &&
!(self->client->max_horz && self->client->max_vert);
+ gboolean topbot = !self->client->max_vert;
XSetWindowAttributes a;
- a.cursor = ob_cursor(r ? OB_CURSOR_NORTH : OB_CURSOR_NONE);
+ /* these ones turn off when max vert */
+ a.cursor = ob_cursor(r && topbot ? OB_CURSOR_NORTH : OB_CURSOR_NONE);
XChangeWindowAttributes(ob_display, self->topresize, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->titletop, CWCursor, &a);
+ a.cursor = ob_cursor(r && topbot ? OB_CURSOR_SOUTH : OB_CURSOR_NONE);
+ XChangeWindowAttributes(ob_display, self->handle, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->handletop, CWCursor, &a);
+ XChangeWindowAttributes(ob_display, self->handlebottom, CWCursor, &a);
+
+ /* these ones don't */
a.cursor = ob_cursor(r ? OB_CURSOR_NORTHWEST : OB_CURSOR_NONE);
XChangeWindowAttributes(ob_display, self->tltresize, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->tllresize, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->left, CWCursor, &a);
a.cursor = ob_cursor(r ? OB_CURSOR_EAST : OB_CURSOR_NONE);
XChangeWindowAttributes(ob_display, self->right, CWCursor, &a);
- a.cursor = ob_cursor(r ? OB_CURSOR_SOUTH : OB_CURSOR_NONE);
- XChangeWindowAttributes(ob_display, self->handle, CWCursor, &a);
- XChangeWindowAttributes(ob_display, self->handletop, CWCursor, &a);
- XChangeWindowAttributes(ob_display, self->handlebottom, CWCursor, &a);
a.cursor = ob_cursor(r ? OB_CURSOR_SOUTHWEST : OB_CURSOR_NONE);
XChangeWindowAttributes(ob_display, self->lgrip, CWCursor, &a);
XChangeWindowAttributes(ob_display, self->handleleft, CWCursor, &a);
context */
return OB_FRAME_CONTEXT_TITLEBAR;
}
+ else if (self->max_vert &&
+ (win == self->titletop || win == self->topresize))
+ /* can't resize vertically when max vert */
+ return OB_FRAME_CONTEXT_TITLEBAR;
if (win == self->window) return OB_FRAME_CONTEXT_FRAME;
if (win == self->label) return OB_FRAME_CONTEXT_TITLEBAR;
case StaticGravity:
case ForgetGravity:
/* the client's position won't move */
- *x -= self->size.left;
+ *x += self->size.left;
break;
}