- if (self->focused)
- XSetWindowBorder(ob_display, self->plate,
- ob_rr_theme->cb_focused_color->pixel);
- else
- XSetWindowBorder(ob_display, self->plate,
- ob_rr_theme->cb_unfocused_color->pixel);
-
- if (self->client->decorations & Decor_Titlebar) {
- RrAppearance *t, *l, *m, *n, *i, *d, *s, *c;
-
- t = (self->focused ?
- self->a_focused_title : self->a_unfocused_title);
- l = (self->focused ?
- self->a_focused_label : self->a_unfocused_label);
- m = (self->focused ?
- (self->client->max_vert || self->client->max_horz ?
- ob_rr_theme->a_focused_pressed_set_max :
- (self->max_press ?
- ob_rr_theme->a_focused_pressed_max :
- ob_rr_theme->a_focused_unpressed_max)) :
- (self->client->max_vert || self->client->max_horz ?
- ob_rr_theme->a_unfocused_pressed_set_max :
- (self->max_press ?
- ob_rr_theme->a_unfocused_pressed_max :
- ob_rr_theme->a_unfocused_unpressed_max)));
- n = self->a_icon;
- i = (self->focused ?
- (self->iconify_press ?
- ob_rr_theme->a_focused_pressed_iconify :
- ob_rr_theme->a_focused_unpressed_iconify) :
- (self->iconify_press ?
- ob_rr_theme->a_unfocused_pressed_iconify :
- ob_rr_theme->a_unfocused_unpressed_iconify));
- d = (self->focused ?
- (self->client->desktop == DESKTOP_ALL ?
- ob_rr_theme->a_focused_pressed_set_desk :
- (self->desk_press ?
- ob_rr_theme->a_focused_pressed_desk :
- ob_rr_theme->a_focused_unpressed_desk)) :
- (self->client->desktop == DESKTOP_ALL ?
- ob_rr_theme->a_unfocused_pressed_set_desk :
- (self->desk_press ?
- ob_rr_theme->a_unfocused_pressed_desk :
- ob_rr_theme->a_unfocused_unpressed_desk)));
- s = (self->focused ?
- (self->client->shaded ?
- ob_rr_theme->a_focused_pressed_set_shade :
- (self->shade_press ?
- ob_rr_theme->a_focused_pressed_shade :
- ob_rr_theme->a_focused_unpressed_shade)) :
- (self->client->shaded ?
- ob_rr_theme->a_unfocused_pressed_set_shade :
- (self->shade_press ?
- ob_rr_theme->a_unfocused_pressed_shade :
- ob_rr_theme->a_unfocused_unpressed_shade)));
- c = (self->focused ?
- (self->close_press ?
- ob_rr_theme->a_focused_pressed_close :
- ob_rr_theme->a_focused_unpressed_close) :
- (self->close_press ?
- ob_rr_theme->a_unfocused_pressed_close :
- ob_rr_theme->a_unfocused_unpressed_close));
+ 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(obt_display, self->backback, px);
+ XClearWindow(obt_display, self->backback);
+ XSetWindowBackground(obt_display, self->innerleft, px);
+ XClearWindow(obt_display, self->innerleft);
+ XSetWindowBackground(obt_display, self->innertop, px);
+ XClearWindow(obt_display, self->innertop);
+ XSetWindowBackground(obt_display, self->innerright, px);
+ XClearWindow(obt_display, self->innerright);
+ XSetWindowBackground(obt_display, self->innerbottom, px);
+ XClearWindow(obt_display, self->innerbottom);
+ XSetWindowBackground(obt_display, self->innerbll, px);
+ XClearWindow(obt_display, self->innerbll);
+ XSetWindowBackground(obt_display, self->innerbrr, px);
+ XClearWindow(obt_display, self->innerbrr);
+ XSetWindowBackground(obt_display, self->innerblb, px);
+ XClearWindow(obt_display, self->innerblb);
+ XSetWindowBackground(obt_display, self->innerbrb, px);
+ XClearWindow(obt_display, self->innerbrb);
+
+ px = (self->focused ?
+ RrColorPixel(ob_rr_theme->frame_focused_border_color) :
+ RrColorPixel(ob_rr_theme->frame_unfocused_border_color));
+
+ XSetWindowBackground(obt_display, self->left, px);
+ XClearWindow(obt_display, self->left);
+ XSetWindowBackground(obt_display, self->right, px);
+ XClearWindow(obt_display, self->right);
+
+ XSetWindowBackground(obt_display, self->titleleft, px);
+ XClearWindow(obt_display, self->titleleft);
+ XSetWindowBackground(obt_display, self->titletop, px);
+ XClearWindow(obt_display, self->titletop);
+ XSetWindowBackground(obt_display, self->titletopleft, px);
+ XClearWindow(obt_display, self->titletopleft);
+ XSetWindowBackground(obt_display, self->titletopright, px);
+ XClearWindow(obt_display, self->titletopright);
+ XSetWindowBackground(obt_display, self->titleright, px);
+ XClearWindow(obt_display, self->titleright);
+
+ XSetWindowBackground(obt_display, self->handleleft, px);
+ XClearWindow(obt_display, self->handleleft);
+ XSetWindowBackground(obt_display, self->handletop, px);
+ XClearWindow(obt_display, self->handletop);
+ XSetWindowBackground(obt_display, self->handleright, px);
+ XClearWindow(obt_display, self->handleright);
+ XSetWindowBackground(obt_display, self->handlebottom, px);
+ XClearWindow(obt_display, self->handlebottom);
+
+ XSetWindowBackground(obt_display, self->lgripleft, px);
+ XClearWindow(obt_display, self->lgripleft);
+ XSetWindowBackground(obt_display, self->lgriptop, px);
+ XClearWindow(obt_display, self->lgriptop);
+ XSetWindowBackground(obt_display, self->lgripbottom, px);
+ XClearWindow(obt_display, self->lgripbottom);
+
+ XSetWindowBackground(obt_display, self->rgripright, px);
+ XClearWindow(obt_display, self->rgripright);
+ XSetWindowBackground(obt_display, self->rgriptop, px);
+ XClearWindow(obt_display, self->rgriptop);
+ XSetWindowBackground(obt_display, self->rgripbottom, px);
+ XClearWindow(obt_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(obt_display, self->titlebottom, px);
+ XClearWindow(obt_display, self->titlebottom);
+ }
+
+ if (self->decorations & OB_FRAME_DECOR_TITLEBAR) {
+ RrAppearance *t, *l, *m, *n, *i, *d, *s, *c, *clear;
+ if (self->focused) {
+ t = ob_rr_theme->a_focused_title;
+ l = ob_rr_theme->a_focused_label;
+ m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ?
+ ob_rr_theme->a_disabled_focused_max :
+ (self->client->max_vert || self->client->max_horz ?
+ (self->max_press ?
+ ob_rr_theme->a_toggled_focused_pressed_max :
+ (self->max_hover ?
+ ob_rr_theme->a_toggled_hover_focused_max :
+ ob_rr_theme->a_toggled_focused_unpressed_max)) :
+ (self->max_press ?
+ ob_rr_theme->a_focused_pressed_max :
+ (self->max_hover ?
+ ob_rr_theme->a_hover_focused_max :
+ ob_rr_theme->a_focused_unpressed_max))));
+ n = ob_rr_theme->a_icon;
+ i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ?
+ ob_rr_theme->a_disabled_focused_iconify :
+ (self->iconify_press ?
+ ob_rr_theme->a_focused_pressed_iconify :
+ (self->iconify_hover ?
+ ob_rr_theme->a_hover_focused_iconify :
+ ob_rr_theme->a_focused_unpressed_iconify)));
+ d = (!(self->decorations & OB_FRAME_DECOR_ALLDESKTOPS) ?
+ ob_rr_theme->a_disabled_focused_desk :
+ (self->client->desktop == DESKTOP_ALL ?
+ (self->desk_press ?
+ ob_rr_theme->a_toggled_focused_pressed_desk :
+ (self->desk_hover ?
+ ob_rr_theme->a_toggled_hover_focused_desk :
+ ob_rr_theme->a_toggled_focused_unpressed_desk)) :
+ (self->desk_press ?
+ ob_rr_theme->a_focused_pressed_desk :
+ (self->desk_hover ?
+ ob_rr_theme->a_hover_focused_desk :
+ ob_rr_theme->a_focused_unpressed_desk))));
+ s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ?
+ ob_rr_theme->a_disabled_focused_shade :
+ (self->client->shaded ?
+ (self->shade_press ?
+ ob_rr_theme->a_toggled_focused_pressed_shade :
+ (self->shade_hover ?
+ ob_rr_theme->a_toggled_hover_focused_shade :
+ ob_rr_theme->a_toggled_focused_unpressed_shade)) :
+ (self->shade_press ?
+ ob_rr_theme->a_focused_pressed_shade :
+ (self->shade_hover ?
+ ob_rr_theme->a_hover_focused_shade :
+ ob_rr_theme->a_focused_unpressed_shade))));
+ c = (!(self->decorations & OB_FRAME_DECOR_CLOSE) ?
+ ob_rr_theme->a_disabled_focused_close :
+ (self->close_press ?
+ ob_rr_theme->a_focused_pressed_close :
+ (self->close_hover ?
+ ob_rr_theme->a_hover_focused_close :
+ ob_rr_theme->a_focused_unpressed_close)));
+ } else {
+ t = ob_rr_theme->a_unfocused_title;
+ l = ob_rr_theme->a_unfocused_label;
+ m = (!(self->decorations & OB_FRAME_DECOR_MAXIMIZE) ?
+ ob_rr_theme->a_disabled_unfocused_max :
+ (self->client->max_vert || self->client->max_horz ?
+ (self->max_press ?
+ ob_rr_theme->a_toggled_unfocused_pressed_max :
+ (self->max_hover ?
+ ob_rr_theme->a_toggled_hover_unfocused_max :
+ ob_rr_theme->a_toggled_unfocused_unpressed_max)) :
+ (self->max_press ?
+ ob_rr_theme->a_unfocused_pressed_max :
+ (self->max_hover ?
+ ob_rr_theme->a_hover_unfocused_max :
+ ob_rr_theme->a_unfocused_unpressed_max))));
+ n = ob_rr_theme->a_icon;
+ i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ?
+ ob_rr_theme->a_disabled_unfocused_iconify :
+ (self->iconify_press ?
+ ob_rr_theme->a_unfocused_pressed_iconify :
+ (self->iconify_hover ?
+ ob_rr_theme->a_hover_unfocused_iconify :
+ ob_rr_theme->a_unfocused_unpressed_iconify)));
+ d = (!(self->decorations & OB_FRAME_DECOR_ALLDESKTOPS) ?
+ ob_rr_theme->a_disabled_unfocused_desk :
+ (self->client->desktop == DESKTOP_ALL ?
+ (self->desk_press ?
+ ob_rr_theme->a_toggled_unfocused_pressed_desk :
+ (self->desk_hover ?
+ ob_rr_theme->a_toggled_hover_unfocused_desk :
+ ob_rr_theme->a_toggled_unfocused_unpressed_desk)) :
+ (self->desk_press ?
+ ob_rr_theme->a_unfocused_pressed_desk :
+ (self->desk_hover ?
+ ob_rr_theme->a_hover_unfocused_desk :
+ ob_rr_theme->a_unfocused_unpressed_desk))));
+ s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ?
+ ob_rr_theme->a_disabled_unfocused_shade :
+ (self->client->shaded ?
+ (self->shade_press ?
+ ob_rr_theme->a_toggled_unfocused_pressed_shade :
+ (self->shade_hover ?
+ ob_rr_theme->a_toggled_hover_unfocused_shade :
+ ob_rr_theme->a_toggled_unfocused_unpressed_shade)) :
+ (self->shade_press ?
+ ob_rr_theme->a_unfocused_pressed_shade :
+ (self->shade_hover ?
+ ob_rr_theme->a_hover_unfocused_shade :
+ ob_rr_theme->a_unfocused_unpressed_shade))));
+ c = (!(self->decorations & OB_FRAME_DECOR_CLOSE) ?
+ ob_rr_theme->a_disabled_unfocused_close :
+ (self->close_press ?
+ ob_rr_theme->a_unfocused_pressed_close :
+ (self->close_hover ?
+ ob_rr_theme->a_hover_unfocused_close :
+ ob_rr_theme->a_unfocused_unpressed_close)));
+ }
+ clear = ob_rr_theme->a_clear;