X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=engines%2Fopenbox%2Fopenbox.c;h=69888b42c6e12cd3b68885758943792344d6f16d;hb=047fe67215d2f4c3e1763dbc0117a54849bfd812;hp=013deec617d4e24eccc3f94d2660f04869adafdf;hpb=2003bee604015e52e94f0c4d60141f0beda9ea37;p=chaz%2Fopenbox diff --git a/engines/openbox/openbox.c b/engines/openbox/openbox.c index 013deec6..69888b42 100644 --- a/engines/openbox/openbox.c +++ b/engines/openbox/openbox.c @@ -176,7 +176,7 @@ gboolean startup() a_unfocused_title = appearance_new(Surface_Planar, 0); a_focused_label = appearance_new(Surface_Planar, 1); a_unfocused_label = appearance_new(Surface_Planar, 1); - a_icon = appearance_new(Surface_Planar, 0);/*1);*/ + a_icon = appearance_new(Surface_Planar, 1); a_focused_handle = appearance_new(Surface_Planar, 0); a_unfocused_handle = appearance_new(Surface_Planar, 0); @@ -471,23 +471,6 @@ void frame_adjust_area(ObFrame *self, gboolean moved, gboolean resized) XUnmapWindow(ob_display, self->handle); } - if (moved) { - /* find the new coordinates */ - self->frame.area.x = self->frame.client->area.x; - self->frame.area.y = self->frame.client->area.y; - frame_client_gravity((Frame*)self, - &self->frame.area.x, &self->frame.area.y); - } - - /* move and resize the top level frame. - shading can change without being moved or resized */ - XMoveResizeWindow(ob_display, self->frame.window, - self->frame.area.x, self->frame.area.y, - self->width, - (self->frame.client->shaded ? TITLE_HEIGHT : - self->innersize.top + self->innersize.bottom + - self->frame.client->area.height)); - if (resized) { /* move and resize the plate */ XMoveResizeWindow(ob_display, self->frame.plate, @@ -515,6 +498,21 @@ void frame_adjust_area(ObFrame *self, gboolean moved, gboolean resized) self->frame.client->area.height + self->frame.size.top + self->frame.size.bottom)); + if (moved) { + /* find the new coordinates, done after setting the frame.size, for + frame_client_gravity. */ + self->frame.area.x = self->frame.client->area.x; + self->frame.area.y = self->frame.client->area.y; + frame_client_gravity((Frame*)self, + &self->frame.area.x, &self->frame.area.y); + } + + /* move and resize the top level frame. + shading can change without being moved or resized */ + XMoveResizeWindow(ob_display, self->frame.window, + self->frame.area.x, self->frame.area.y, + self->width, self->frame.area.height - self->bwidth * 2); + if (resized) { render(self); @@ -790,8 +788,17 @@ static void render_icon(ObFrame *self) { if (self->icon_x < 0) return; - /* XXX set the texture's icon picture! */ - RECT_SET(self->a_icon->texture[0].position, 0, 0, BUTTON_SIZE,BUTTON_SIZE); + if (self->frame.client->nicons) { + Icon *icon = client_icon(self->frame.client, BUTTON_SIZE, BUTTON_SIZE); + self->a_icon->texture[0].type = RGBA; + self->a_icon->texture[0].data.rgba.width = icon->width; + self->a_icon->texture[0].data.rgba.height = icon->height; + self->a_icon->texture[0].data.rgba.data = icon->data; + RECT_SET(self->a_icon->texture[0].position, 0, 0, + BUTTON_SIZE,BUTTON_SIZE); + } else + self->a_icon->texture[0].type = NoTexture; + paint(self->icon, self->a_icon, 0, 0, BUTTON_SIZE, BUTTON_SIZE); }