void framerender_frame(ObFrame *self)
{
+ if (frame_iconify_animating(self))
+ return; /* delay redrawing until the animation is done */
+ if (!self->need_render)
+ return;
+ if (!self->visible)
+ return;
+ self->need_render = FALSE;
+
{
gulong px;
px = (self->focused ?
RrColorPixel(ob_rr_theme->cb_focused_color) :
RrColorPixel(ob_rr_theme->cb_unfocused_color));
- XSetWindowBackground(ob_display, self->inner, px);
- XClearWindow(ob_display, self->inner);
+
+ XSetWindowBackground(ob_display, self->backback, px);
+ XClearWindow(ob_display, self->backback);
+ XSetWindowBackground(ob_display, self->innerleft, px);
+ XClearWindow(ob_display, self->innerleft);
+ XSetWindowBackground(ob_display, self->innertop, px);
+ XClearWindow(ob_display, self->innertop);
+ XSetWindowBackground(ob_display, self->innerright, px);
+ XClearWindow(ob_display, self->innerright);
+ XSetWindowBackground(ob_display, self->innerbottom, px);
+ XClearWindow(ob_display, self->innerbottom);
px = (self->focused ?
RrColorPixel(ob_rr_theme->frame_focused_border_color) :
RrColorPixel(ob_rr_theme->frame_unfocused_border_color));
- XSetWindowBorder(ob_display, self->window, px);
- XSetWindowBorder(ob_display, self->title, px);
- XSetWindowBorder(ob_display, self->handle, px);
- XSetWindowBorder(ob_display, self->rgrip, px);
- XSetWindowBorder(ob_display, self->lgrip, px);
- XSetWindowBorder(ob_display, self->leftresize, px);
- XSetWindowBorder(ob_display, self->rightresize, px);
+
+ XSetWindowBackground(ob_display, self->left, px);
+ XClearWindow(ob_display, self->left);
+ XSetWindowBackground(ob_display, self->right, px);
+ XClearWindow(ob_display, self->right);
+
+ XSetWindowBackground(ob_display, self->titleleft, px);
+ XClearWindow(ob_display, self->titleleft);
+ XSetWindowBackground(ob_display, self->titletop, px);
+ XClearWindow(ob_display, self->titletop);
+ XSetWindowBackground(ob_display, self->titletopleft, px);
+ XClearWindow(ob_display, self->titletopleft);
+ XSetWindowBackground(ob_display, self->titletopright, px);
+ XClearWindow(ob_display, self->titletopright);
+ XSetWindowBackground(ob_display, self->titleright, px);
+ XClearWindow(ob_display, self->titleright);
+
+ XSetWindowBackground(ob_display, self->handleleft, px);
+ XClearWindow(ob_display, self->handleleft);
+ XSetWindowBackground(ob_display, self->handletop, px);
+ XClearWindow(ob_display, self->handletop);
+ XSetWindowBackground(ob_display, self->handleright, px);
+ XClearWindow(ob_display, self->handleright);
+ XSetWindowBackground(ob_display, self->handlebottom, px);
+ XClearWindow(ob_display, self->handlebottom);
+
+ XSetWindowBackground(ob_display, self->lgripleft, px);
+ XClearWindow(ob_display, self->lgripleft);
+ XSetWindowBackground(ob_display, self->lgriptop, px);
+ XClearWindow(ob_display, self->lgriptop);
+ XSetWindowBackground(ob_display, self->lgripbottom, px);
+ XClearWindow(ob_display, self->lgripbottom);
+
+ XSetWindowBackground(ob_display, self->rgripright, px);
+ XClearWindow(ob_display, self->rgripright);
+ XSetWindowBackground(ob_display, self->rgriptop, px);
+ XClearWindow(ob_display, self->rgriptop);
+ XSetWindowBackground(ob_display, self->rgripbottom, px);
+ XClearWindow(ob_display, self->rgripbottom);
+
+ /* don't use the separator color for shaded windows */
+ if (!self->client->shaded)
+ px = (self->focused ?
+ RrColorPixel(ob_rr_theme->title_separator_focused_color) :
+ RrColorPixel(ob_rr_theme->title_separator_unfocused_color));
+
+ XSetWindowBackground(ob_display, self->titlebottom, px);
+ XClearWindow(ob_display, self->titlebottom);
}
if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
- RrAppearance *t, *l, *m, *n, *i, *d, *s, *c;
+ RrAppearance *t, *l, *m, *n, *i, *d, *s, *c, *clear;
if (self->focused) {
t = self->a_focused_title;
ob_rr_theme->a_hover_unfocused_close :
ob_rr_theme->a_unfocused_unpressed_close)));
}
+ clear = ob_rr_theme->a_clear;
RrPaint(t, self->title, self->width, ob_rr_theme->title_height);
- ob_rr_theme->a_clear->surface.parent = t;
- ob_rr_theme->a_clear->surface.parenty = 0;
+ clear->surface.parent = t;
+ clear->surface.parenty = 0;
+
+ clear->surface.parentx = ob_rr_theme->grip_width;
- ob_rr_theme->a_clear->surface.parentx = ob_rr_theme->grip_width +
- self->bwidth;
- RrPaint(ob_rr_theme->a_clear, self->topresize,
- self->width - (ob_rr_theme->grip_width + self->bwidth) * 2,
+ RrPaint(clear, self->topresize,
+ self->width - ob_rr_theme->grip_width * 2,
ob_rr_theme->paddingy + 1);
- ob_rr_theme->a_clear->surface.parentx = 0;
+ clear->surface.parentx = 0;
if (ob_rr_theme->grip_width > 0)
- RrPaint(ob_rr_theme->a_clear, self->tltresize,
+ RrPaint(clear, self->tltresize,
ob_rr_theme->grip_width, ob_rr_theme->paddingy + 1);
if (ob_rr_theme->title_height > 0)
- RrPaint(ob_rr_theme->a_clear, self->tllresize,
+ RrPaint(clear, self->tllresize,
ob_rr_theme->paddingx + 1, ob_rr_theme->title_height);
- ob_rr_theme->a_clear->surface.parentx =
- self->width - ob_rr_theme->grip_width;
+ clear->surface.parentx = self->width - ob_rr_theme->grip_width;
if (ob_rr_theme->grip_width > 0)
- RrPaint(ob_rr_theme->a_clear, self->trtresize,
+ RrPaint(clear, self->trtresize,
ob_rr_theme->grip_width, ob_rr_theme->paddingy + 1);
- ob_rr_theme->a_clear->surface.parentx =
- self->width - (ob_rr_theme->paddingx + 1);
+ clear->surface.parentx = self->width - (ob_rr_theme->paddingx + 1);
if (ob_rr_theme->title_height > 0)
- RrPaint(ob_rr_theme->a_clear, self->trrresize,
+ RrPaint(clear, self->trrresize,
ob_rr_theme->paddingx + 1, ob_rr_theme->title_height);
/* set parents for any parent relative guys */
a->texture[0].type = RR_TEXTURE_RGBA;
a->texture[0].data.rgba.width = icon->width;
a->texture[0].data.rgba.height = icon->height;
+ a->texture[0].data.rgba.alpha = 0xff;
a->texture[0].data.rgba.data = icon->data;
} else
a->texture[0].type = RR_TEXTURE_NONE;