diff --git a/src/servers/app/server/Layer.cpp b/src/servers/app/server/Layer.cpp index eb4233e7f9..f7e3d1acf3 100644 --- a/src/servers/app/server/Layer.cpp +++ b/src/servers/app/server/Layer.cpp @@ -369,6 +369,21 @@ ServerWindow* Layer::SearchForServerWindow() const return NULL; } +void Layer::RebuildAndForceRedraw(const BRegion& reg, Layer *target) +{ + STRACE(("Layer(%s)::RebuildAndForceRedraw():\n", GetName())); + BPoint pt(0,0); + + StartRebuildRegions(reg, NULL, B_LAYER_NONE, pt); + + if (target) + gRedrawReg.Include(&(target->fFullVisible)); + + Redraw(gRedrawReg); + + EmptyGlobals(); +} + void Layer::FullInvalidate(const BRect &rect) { FullInvalidate( BRegion(rect) ); diff --git a/src/servers/app/server/Layer.h b/src/servers/app/server/Layer.h index ca3e22aa2d..46dd21e3d4 100644 --- a/src/servers/app/server/Layer.h +++ b/src/servers/app/server/Layer.h @@ -57,6 +57,7 @@ public: void FullInvalidate(const BRect &rect); void FullInvalidate(const BRegion ®ion); void Invalidate(const BRegion ®ion); + void RebuildAndForceRedraw( const BRegion& reg, Layer *target); virtual void RebuildFullRegion(void); void StartRebuildRegions( const BRegion& reg, Layer *target, uint32 action, BPoint& pt);