From 7034296d83ef1a328f5e90ea65c0d77453b6a707 Mon Sep 17 00:00:00 2001 From: Richard Grenville Date: Sun, 30 Nov 2014 15:39:07 +0800 Subject: Bug fix: --no-fading-openclose doesn't work when fading out - Fix the bug that --no-fading-openclose doesn not work when fading out by writing w->fade_last as well in win_determine_fade(). - Write w->fade_last for applying w->fade_force, as well. (cherry picked from commit 2dff937b31aa3753dca28fdda741be5d1da25088) --- twin/compton-tde/compton.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/twin/compton-tde/compton.c b/twin/compton-tde/compton.c index ad310538b..30537b786 100644 --- a/twin/compton-tde/compton.c +++ b/twin/compton-tde/compton.c @@ -3009,32 +3009,32 @@ calc_dim(session_t *ps, win *w) { */ static void win_determine_fade(session_t *ps, win *w) { + // To prevent it from being overwritten by last-paint value if the window is + // unmapped on next frame, write w->fade_last as well if (UNSET != w->fade_force) { #ifdef DEBUG_FADE printf_dbgf("(%#010lx): fade forced\n", w->id); #endif - w->fade = w->fade_force; + w->fade_last = w->fade = w->fade_force; } else if (ps->o.no_fading_openclose && (w->in_openclose || w->destroyed)) { #ifdef DEBUG_FADE printf_dbgf("(): no_fading_openclose and in_openclose\n"); #endif - w->fade = false; + w->fade_last = w->fade = false; } else if (ps->o.no_fading_opacitychange && (!w->in_openclose)) { #ifdef DEBUG_FADE printf_dbgf("(): no_fading_opacitychange and !in_openclose\n"); #endif - w->fade = false; + w->fade_last = w->fade = false; } else if (ps->o.no_fading_destroyed_argb && w->destroyed && WMODE_ARGB == w->mode && w->client_win && w->client_win != w->id) { #ifdef DEBUG_FADE printf_dbgf("(): no_fading_destroyed_argb\n"); #endif - w->fade = false; - // Prevent it from being overwritten by last-paint value - w->fade_last = false; + w->fade_last = w->fade = false; } // Ignore other possible causes of fading state changes after window // gets unmapped -- cgit v1.2.1