Make sure window cannot enter fading when unredirected
Firstly, this breaks the assumption that when we redirect the screen, all window is either mapped or unmapped, causing a assertion failure. Secondly, if transition window into fading when the screen is not redirected, the fading will not progress until the screen is redirected, probably not the desired result. Fixes #246 Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
parent
93f0d80572
commit
1ca01ec456
|
@ -468,11 +468,14 @@ static inline void ev_property_notify(session_t *ps, xcb_property_notify_event_t
|
||||||
win_update_opacity_prop(ps, w);
|
win_update_opacity_prop(ps, w);
|
||||||
// we cannot receive OPACITY change when window is destroyed
|
// we cannot receive OPACITY change when window is destroyed
|
||||||
assert(w->state != WSTATE_DESTROYING);
|
assert(w->state != WSTATE_DESTROYING);
|
||||||
|
w->opacity_target = win_calc_opacity_target(ps, w, false);
|
||||||
if (w->state == WSTATE_MAPPED) {
|
if (w->state == WSTATE_MAPPED) {
|
||||||
// See the winstate_t transition table
|
// See the winstate_t transition table
|
||||||
w->state = WSTATE_FADING;
|
w->state = WSTATE_FADING;
|
||||||
}
|
}
|
||||||
w->opacity_target = win_calc_opacity_target(ps, w, false);
|
if (!ps->redirected) {
|
||||||
|
CHECK(!win_skip_fading(ps, w));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,6 +121,9 @@ static void win_update_focused(session_t *ps, struct managed_win *w) {
|
||||||
if (opacity_target_old != w->opacity_target && w->state == WSTATE_MAPPED) {
|
if (opacity_target_old != w->opacity_target && w->state == WSTATE_MAPPED) {
|
||||||
// Only MAPPED can transition to FADING
|
// Only MAPPED can transition to FADING
|
||||||
w->state = WSTATE_FADING;
|
w->state = WSTATE_FADING;
|
||||||
|
if (!ps->redirected) {
|
||||||
|
CHECK(!win_skip_fading(ps, w));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue