X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fframerender.c;h=0b2363cd1811e195f06da0cda495a8c4ac3f15e2;hb=2e8c9a13d4e188b538b14bd9a9d9cf31809400ed;hp=2fec1a55d6c5e640b880f5754431114f89a8842d;hpb=c4eaa943852c770d09034258ba40ccc07516d2f6;p=chaz%2Fopenbox diff --git a/openbox/framerender.c b/openbox/framerender.c index 2fec1a55..0b2363cd 100644 --- a/openbox/framerender.c +++ b/openbox/framerender.c @@ -34,6 +34,14 @@ static void framerender_close(ObFrame *self, RrAppearance *a); 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; @@ -41,61 +49,76 @@ void framerender_frame(ObFrame *self) RrColorPixel(ob_rr_theme->cb_focused_color) : RrColorPixel(ob_rr_theme->cb_unfocused_color)); - 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); + 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(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->titlebottom, px); - XClearWindow(ob_display, self->titlebottom); - - 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); + 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) { @@ -111,12 +134,12 @@ void framerender_frame(ObFrame *self) (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_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_hover_focused_max : ob_rr_theme->a_focused_unpressed_max)))); n = self->a_icon; i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ? @@ -124,7 +147,7 @@ void framerender_frame(ObFrame *self) (self->iconify_press ? ob_rr_theme->a_focused_pressed_iconify : (self->iconify_hover ? - ob_rr_theme->a_hover_focused_iconify : + 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 : @@ -132,12 +155,12 @@ void framerender_frame(ObFrame *self) (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_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_hover_focused_desk : ob_rr_theme->a_focused_unpressed_desk)))); s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ? ob_rr_theme->a_disabled_focused_shade : @@ -145,19 +168,19 @@ void framerender_frame(ObFrame *self) (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_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_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_hover_focused_close : ob_rr_theme->a_focused_unpressed_close))); } else { t = self->a_unfocused_title; @@ -168,12 +191,12 @@ void framerender_frame(ObFrame *self) (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_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_hover_unfocused_max : ob_rr_theme->a_unfocused_unpressed_max)))); n = self->a_icon; i = (!(self->decorations & OB_FRAME_DECOR_ICONIFY) ? @@ -181,7 +204,7 @@ void framerender_frame(ObFrame *self) (self->iconify_press ? ob_rr_theme->a_unfocused_pressed_iconify : (self->iconify_hover ? - ob_rr_theme->a_hover_unfocused_iconify : + 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 : @@ -189,12 +212,12 @@ void framerender_frame(ObFrame *self) (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_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_hover_unfocused_desk : ob_rr_theme->a_unfocused_unpressed_desk)))); s = (!(self->decorations & OB_FRAME_DECOR_SHADE) ? ob_rr_theme->a_disabled_unfocused_shade : @@ -202,19 +225,19 @@ void framerender_frame(ObFrame *self) (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_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_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_hover_unfocused_close : ob_rr_theme->a_unfocused_unpressed_close))); } clear = ob_rr_theme->a_clear; @@ -320,7 +343,7 @@ void framerender_frame(ObFrame *self) } } - XFlush(ob_display); + XFlush(obt_display); } static void framerender_label(ObFrame *self, RrAppearance *a)