diff --git a/src/compositor.c b/src/compositor.c index db430379601c5ddc015430d0d2492704f15dc56d..783b87ed7d825947f8318bbdebf23fe7fd24697e 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1584,14 +1584,25 @@ damage_screen (ScreenInfo *screen_info) } static void -damage_win (CWindow *cw) +damage_extents (CWindow *cw) { XserverRegion extents; + ScreenInfo *screen_info; + DisplayInfo *display_info; g_return_if_fail (cw != NULL); - TRACE ("entering damage_win"); + TRACE ("entering damage_extents"); + + if (cw->borderSize == None) + { + cw->borderSize = border_size (cw); + } + + screen_info = cw->screen_info; + display_info = screen_info->display_info; extents = win_extents (cw); + XFixesSubtractRegion (display_info->dpy, extents, extents, cw->borderSize); fix_region (cw, extents); add_damage (cw->screen_info, extents); } @@ -1747,9 +1758,13 @@ unmap_win (CWindow *cw) TRACE ("Unmapped window 0x%lx, overlays decreased to %i\n", cw->id, screen_info->overlays); } + if (WIN_IS_VISIBLE(cw)) + { + damage_extents (cw); + } + cw->viewable = FALSE; cw->damaged = FALSE; - damage_win (cw); free_win_data (cw, FALSE); }