X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fframe.c;h=8feef931b4200674586f94027a2d8b4ddc1c0b53;hb=071b5ee301bc847d95b1ae7b5bd6c2c4d225955d;hp=5baaf16bf2ed5ea3ac45cf3a03cd42048110c1f2;hpb=89658cf6487ce56ca59c7486b6b300af461ef75c;p=chaz%2Fopenbox diff --git a/openbox/frame.c b/openbox/frame.c index 5baaf16b..8feef931 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -167,6 +167,8 @@ ObFrame *frame_new(ObClient *client) static void set_theme_statics(ObFrame *self) { /* set colors/appearance/sizes for stuff that doesn't change */ + XSetWindowBorder(ob_display, self->window, + RrColorPixel(ob_rr_theme->frame_b_color)); XSetWindowBorder(ob_display, self->inner, RrColorPixel(ob_rr_theme->frame_b_color)); XSetWindowBorder(ob_display, self->title, @@ -464,12 +466,14 @@ void frame_adjust_area(ObFrame *self, gboolean moved, self->client->area.height + self->size.top + self->size.bottom)); - if (moved) { + if (moved || resized) { /* find the new coordinates, done after setting the frame.size, for frame_client_gravity. */ self->area.x = self->client->area.x; self->area.y = self->client->area.y; - frame_client_gravity(self, &self->area.x, &self->area.y); + frame_client_gravity(self, &self->area.x, &self->area.y, + self->client->area.width, + self->client->area.height); } if (!fake) { @@ -505,6 +509,13 @@ void frame_adjust_area(ObFrame *self, gboolean moved, ob_rr_theme->label_height); } +void frame_adjust_client_area(ObFrame *self) +{ + /* resize the plate */ + XResizeWindow(ob_display, self->plate, + self->client->area.width, self->client->area.height); +} + void frame_adjust_state(ObFrame *self) { framerender_frame(self); @@ -517,13 +528,6 @@ void frame_adjust_focus(ObFrame *self, gboolean hilite) XFlush(ob_display); } -void frame_adjust_client_area(ObFrame *self) -{ - /* resize the plate */ - XResizeWindow(ob_display, self->plate, - self->client->area.width, self->client->area.height); -} - void frame_adjust_title(ObFrame *self) { framerender_frame(self); @@ -859,7 +863,7 @@ ObFrameContext frame_context(ObClient *client, Window win) return OB_FRAME_CONTEXT_NONE; } -void frame_client_gravity(ObFrame *self, gint *x, gint *y) +void frame_client_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h) { /* horizontal */ switch (self->client->gravity) { @@ -872,13 +876,13 @@ void frame_client_gravity(ObFrame *self, gint *x, gint *y) case NorthGravity: case SouthGravity: case CenterGravity: - *x -= (self->size.left + self->size.right) / 2; + *x -= (self->size.left + w) / 2; break; case NorthEastGravity: case SouthEastGravity: case EastGravity: - *x -= self->size.left + self->size.right; + *x -= (self->size.left + self->size.right + w) - 1; break; case ForgetGravity: @@ -898,13 +902,13 @@ void frame_client_gravity(ObFrame *self, gint *x, gint *y) case CenterGravity: case EastGravity: case WestGravity: - *y -= (self->size.top + self->size.bottom) / 2; + *y -= (self->size.top + h) / 2; break; case SouthWestGravity: case SouthEastGravity: case SouthGravity: - *y -= self->size.top + self->size.bottom; + *y -= (self->size.top + self->size.bottom + h) - 1; break; case ForgetGravity: @@ -914,7 +918,7 @@ void frame_client_gravity(ObFrame *self, gint *x, gint *y) } } -void frame_frame_gravity(ObFrame *self, gint *x, gint *y) +void frame_frame_gravity(ObFrame *self, gint *x, gint *y, gint w, gint h) { /* horizontal */ switch (self->client->gravity) { @@ -926,12 +930,12 @@ void frame_frame_gravity(ObFrame *self, gint *x, gint *y) case NorthGravity: case CenterGravity: case SouthGravity: - *x += (self->size.left + self->size.right) / 2; + *x += (self->size.left + w) / 2; break; case NorthEastGravity: case EastGravity: case SouthEastGravity: - *x += self->size.left + self->size.right; + *x += (self->size.left + self->size.right + w) - 1; break; case StaticGravity: case ForgetGravity: @@ -949,12 +953,12 @@ void frame_frame_gravity(ObFrame *self, gint *x, gint *y) case WestGravity: case CenterGravity: case EastGravity: - *y += (self->size.top + self->size.bottom) / 2; + *y += (self->size.top + h) / 2; break; case SouthWestGravity: case SouthGravity: case SouthEastGravity: - *y += self->size.top + self->size.bottom; + *y += (self->size.top + self->size.bottom + h) - 1; break; case StaticGravity: case ForgetGravity: