event: add damage for reparented windows

See code comments for details.

Fixes #1081

Signed-off-by: Yuxuan Shui <yshuiv7@gmail.com>
This commit is contained in:
Yuxuan Shui 2024-03-06 02:30:52 +00:00
parent 617354fb3b
commit f5abccb29c
No known key found for this signature in database
GPG Key ID: D3A4405BE6CC17F4
1 changed files with 10 additions and 0 deletions

View File

@ -353,6 +353,16 @@ static inline void ev_reparent_notify(session_t *ps, xcb_reparent_notify_event_t
if (!ret && w->managed) {
auto mw = (struct managed_win *)w;
CHECK(win_skip_fading(ps, mw));
// Usually, damage for unmapped windows
// are added in `paint_preprocess`, when
// a window was painted before and isn't
// anymore. But since we are reparenting
// the window here, we would lose track
// of the `to_paint` information. So we
// just add damage here.
if (mw->to_paint) {
add_damage_from_win(ps, mw);
}
}
}
}