X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.c;h=3059bc49204739317545dc326e5b3fa540ad767e;hb=bca4fe6c8b8d1ab8b2c9273149f48fd9cd4e0f4d;hp=73d5c02632df1e9f1f9ed03e6fd78da6d17da3e3;hpb=1612a16e80abb7994d9498de48fe4c0ded00cdb9;p=chaz%2Fopenbox diff --git a/openbox/frame.c b/openbox/frame.c index 73d5c026..3059bc49 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -295,18 +295,20 @@ void frame_adjust_shape(ObFrame *self) 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; @@ -338,17 +340,20 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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) @@ -380,16 +385,21 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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); @@ -405,12 +415,14 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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); @@ -475,17 +487,25 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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, @@ -560,9 +580,22 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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); @@ -596,10 +629,14 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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, @@ -607,6 +644,12 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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, @@ -616,12 +659,9 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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 */ @@ -629,13 +669,16 @@ void frame_adjust_area(ObFrame *self, gboolean moved, 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); @@ -1418,8 +1461,8 @@ static gboolean frame_animate_iconify(gpointer p) /* 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; @@ -1472,8 +1515,7 @@ void frame_end_iconify_animation(ObFrame *self) 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); }