diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 1337c4656d..e5437e73ed 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -1577,9 +1577,20 @@ fDesktop->LockSingleWindow(); { uint32 flags; link.Read(&flags); + + // The views clipping changes when the B_DRAW_ON_CHILDREN flag is + // toggled. + bool updateClipping = (flags & B_DRAW_ON_CHILDREN) + ^ (fCurrentView->Flags() & B_DRAW_ON_CHILDREN); + fCurrentView->SetFlags(flags); _UpdateDrawState(fCurrentView); + if (updateClipping) { + fCurrentView->RebuildClipping(false); + fCurrentDrawingRegionValid = false; + } + DTRACE(("ServerWindow %s: Message AS_VIEW_SET_FLAGS: " "View: %s -> flags: %lu\n", Title(), fCurrentView->Name(), flags));