diff --git a/src/servers/app/DefaultDecorator.cpp b/src/servers/app/DefaultDecorator.cpp index 9c0d066bbe..341b66fd4c 100644 --- a/src/servers/app/DefaultDecorator.cpp +++ b/src/servers/app/DefaultDecorator.cpp @@ -136,6 +136,23 @@ DefaultDecorator::SetLook(DesktopSettings& settings, void DefaultDecorator::SetFlags(uint32 flags, BRegion* updateRegion) { + // TODO: we could be much smarter about the update region + + // get previous extent + if (updateRegion != NULL) { + BRegion extent; + GetFootprint(&extent); + updateRegion->Include(&extent); + } + + Decorator::SetFlags(flags, updateRegion); + _DoLayout(); + + if (updateRegion != NULL) { + BRegion extent; + GetFootprint(&extent); + updateRegion->Include(&extent); + } } diff --git a/src/servers/app/WindowLayer.cpp b/src/servers/app/WindowLayer.cpp index 34e3b28811..cd0ca255c5 100644 --- a/src/servers/app/WindowLayer.cpp +++ b/src/servers/app/WindowLayer.cpp @@ -725,7 +725,16 @@ WindowLayer::SetFeel(window_feel feel) void WindowLayer::SetWindowFlags(uint32 flags, BRegion* updateRegion) { - // TODO: implement settings window flags + fWindowFlags = flags; + + if (fDecorator == NULL) + return; + + fDecorator->SetFlags(flags, updateRegion); + fRebuildDecRegion = true; + + // TODO: we might need to resize the window! + //fDecorator->GetSizeLimits(&fMinWidth, &fMinHeight, &fMaxWidth, &fMaxHeight); }