From 693e2f4fb4d98df01cd363da578bdc5b9922fd1f Mon Sep 17 00:00:00 2001 From: Adrien Destugues Date: Sat, 9 May 2020 13:02:45 +0200 Subject: [PATCH] app_server: actually invalidate decorator area on window close More completely fixes #12085 Change-Id: I73bf987f06422bebbfc739d3700c11edad928646 Reviewed-on: https://review.haiku-os.org/c/haiku/+/2621 Reviewed-by: waddlesplash (cherry picked from commit a16c358d59b43b1e274b323105d24ce4e9f97292) Reviewed-on: https://review.haiku-os.org/c/haiku/+/2634 --- src/servers/app/Window.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/servers/app/Window.cpp b/src/servers/app/Window.cpp index 63f019900d..8be0c8efdf 100644 --- a/src/servers/app/Window.cpp +++ b/src/servers/app/Window.cpp @@ -2098,9 +2098,10 @@ Window::DetachFromWindowStack(bool ownStackNeeded) if (fCurrentStack->RemoveWindow(this) == false) return false; + BRegion invalidatedRegion; ::Decorator* decorator = fCurrentStack->Decorator(); if (decorator != NULL) { - decorator->RemoveTab(index); + decorator->RemoveTab(index, &invalidatedRegion); decorator->SetTopTab(fCurrentStack->LayerOrder().CountItems() - 1); } @@ -2120,8 +2121,9 @@ Window::DetachFromWindowStack(bool ownStackNeeded) SetFocus(IsFocus()); if (remainingTop != NULL) { + invalidatedRegion.Include(&remainingTop->VisibleRegion()); fDesktop->RebuildAndRedrawAfterWindowChange(remainingTop, - remainingTop->VisibleRegion()); + invalidatedRegion); } return true; }