diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-06-10 03:58:02 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-06-10 03:58:02 +0000 |
| commit | ef8bd3947da3816eb365d64042a9c9d49e1b9b98 (patch) | |
| tree | a212731e33a748536d8451222f6447f232987f80 /openbox | |
| parent | d3c22b58cba15c9420a9c09225c4ba5c66edfa23 (diff) | |
delay re-rendering the frame while it is being iconify-animated until the animation finishes (avoid it flashing to unfocused)
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/frame.c | 5 | ||||
| -rw-r--r-- | openbox/framerender.c | 3 |
2 files changed, 7 insertions, 1 deletions
diff --git a/openbox/frame.c b/openbox/frame.c index 8ce2a16d..c30415dd 100644 --- a/openbox/frame.c +++ b/openbox/frame.c @@ -1630,10 +1630,11 @@ void frame_end_iconify_animation(ObFrame *self) if (!self->visible) XUnmapWindow(ob_display, self->window); - else + else { /* Send a ConfigureNotify when the animation is done, this fixes KDE's pager showing the window in the wrong place. */ client_reconfigure(self->client); + } /* we're not animating any more ! */ self->iconify_animation_going = 0; @@ -1641,6 +1642,8 @@ void frame_end_iconify_animation(ObFrame *self) XMoveResizeWindow(ob_display, self->window, self->area.x, self->area.y, self->area.width, self->area.height); + /* we delay re-rendering until after we're done animating */ + framerender_frame(self); XFlush(ob_display); } diff --git a/openbox/framerender.c b/openbox/framerender.c index b5cdf174..a02567bd 100644 --- a/openbox/framerender.c +++ b/openbox/framerender.c @@ -34,6 +34,9 @@ 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 */ + { gulong px; |
