71 mpWindowImpl->mpBorderWindow->SetParentClipMode( nMode );
78 mpWindowImpl->mpParent->mpWindowImpl->mbClipChildren =
true;
86 return mpWindowImpl->mpBorderWindow->GetParentClipMode();
104 pOutDev->
ReMirror( aWinChildRegion );
107 aDevPixRegion.
Intersect( aWinChildRegion );
108 if( ! aDevPixRegion.
IsEmpty() )
125 if ( aWinRegion == aWinClipRegion )
130 return aWinClipRegion;
162 mpWindowImpl->mpBorderWindow->EnableClipSiblings( bClipSiblings );
177 if ( bOverlaps && !rRegion.
IsEmpty() )
183 vcl::Window* pOverlapWindow = pStartOverlapWindow->
mpWindowImpl->mpOverlapWindow->mpWindowImpl->mpFirstOverlap;
184 while ( pOverlapWindow && (pOverlapWindow != pStartOverlapWindow) )
189 pStartOverlapWindow = pStartOverlapWindow->
mpWindowImpl->mpOverlapWindow;
202 bool bOtherClip =
false;
239 if ( pWindow ==
this )
312 if (!rWinChildClipRegion.
IsEmpty())
317 rWinChildClipRegion.
Intersect(*pOldRegion);
318 bUpdate = aNewRegion == rWinChildClipRegion;
324 if ( aRegion == aWinRectRegion )
333 mpWindowImpl->mpSysObj->BeginSetClipRegion(aRectangles.size());
335 for (
auto const&
rectangle : aRectangles)
348 bVisibleState =
false;
401 mpWindowImpl->mpFrameWindow->ImplUpdateSysObjOverlapsClip();
409 std::unique_ptr<vcl::Region> pOldRegion;
410 if ( bSysObjOnlySmaller && !
mpWindowImpl->mbInitWinClipRegion )
491 return mpWindowImpl->mpFrameWindow->ImplSetClipFlagOverlapWindows( bSysObjOnlySmaller );
555 rRegion.
Union( aTempRegion );
569 rRegion.
Union( aTempRegion );
582 pStartOverlapWindow =
this;
585 vcl::Window* pOverlapWindow = pStartOverlapWindow->
mpWindowImpl->mpOverlapWindow->mpWindowImpl->mpFirstOverlap;
586 while ( pOverlapWindow && (pOverlapWindow != pStartOverlapWindow) )
591 pStartOverlapWindow = pStartOverlapWindow->
mpWindowImpl->mpOverlapWindow;
596 mpWindowImpl->mpOverlapWindow->ImplIntersectAndUnionOverlapWindows( rInterRegion, rRegion );
602 bool bChildren,
bool bSiblings )
619 aTempRegion = aRegion;
621 rRegion.
Union( aTempRegion );
630 aTempRegion = aRegion;
632 rRegion.
Union( aTempRegion );
638 pWindow =
mpWindowImpl->mpParent->mpWindowImpl->mpFirstChild;
641 if ( pWindow->
mpWindowImpl->mbReallyVisible && (pWindow !=
this) )
643 aTempRegion = aRegion;
645 rRegion.
Union( aTempRegion );
660 aTempRegion = aRegion;
662 rRegion.
Union( aTempRegion );
689 aClip.
Move( aPixOffset.
X() - aPixPos.
X(), aPixOffset.
Y() - aPixPos.
Y() );
void SetOrigin(const Point &rOrigin)
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
Size GetOutputSize() const
void EnableMapMode(bool bEnable=true)
vcl::Region GetClipRegion() const
SAL_DLLPRIVATE bool ImplIsAntiparallel() const
tools::Long mnOutOffY
Output offset for device output in pixel (pseudo window offset within window system's frames)
tools::Long mnOutOffX
Output offset for device output in pixel (pseudo window offset within window system's frames)
SAL_WARN_UNUSED_RESULT Point PixelToLogic(const Point &rDevicePt) const
virtual void DrawOutDev(const Point &rDestPt, const Size &rDestSize, const Point &rSrcPt, const Size &rSrcSize)
SAL_WARN_UNUSED_RESULT Point LogicToPixel(const Point &rLogicPt) const
SAL_DLLPRIVATE void ReMirror(Point &rPoint) const
const MapMode & GetMapMode() const
bool SelectClipRegion(const vcl::Region &, SalGraphics *pGraphics=nullptr)
SAL_DLLPRIVATE vcl::Region ImplPixelToDevicePixel(const vcl::Region &rRegion) const
Convert a region in pixel units to a region in device pixel units and coords.
bool IsMapModeEnabled() const
constexpr tools::Long Y() const
constexpr tools::Long X() const
void Move(tools::Long nHorzMove, tools::Long nVertMove)
void Intersect(const tools::Rectangle &rRegion)
tools::Rectangle GetBoundRect() const
void Union(const tools::Rectangle &rRegion)
void Exclude(const tools::Rectangle &rRegion)
void GetRegionRectangles(RectangleVector &rTarget) const
virtual void InitClipRegion() override
void SaveBackground(VirtualDevice &rSaveDevice, const Point &rPos, const Size &rSize, const Size &) const override
virtual vcl::Region GetActiveClipRegion() const override
VclPtr< vcl::Window > mxOwnerWindow
virtual void ClipToPaintRegion(tools::Rectangle &rDstRect) override
virtual vcl::Region GetOutputBoundsClipRegion() const override
SAL_DLLPRIVATE bool ImplSysObjClip(const vcl::Region *pOldRegion)
Point LogicToPixel(const Point &rLogicPt) const
SAL_DLLPRIVATE void ImplClipBoundaries(vcl::Region &rRegion, bool bThis, bool bOverlaps)
SAL_DLLPRIVATE void ImplCalcOverlapRegion(const tools::Rectangle &rSourceRect, vcl::Region &rRegion, bool bChildren, bool bSiblings)
SAL_DLLPRIVATE void ImplExcludeWindowRegion(vcl::Region &rRegion)
SAL_DLLPRIVATE void ImplIntersectAndUnionOverlapWindows(const vcl::Region &rInterRegion, vcl::Region &rRegion) const
SAL_DLLPRIVATE bool ImplIsOverlapWindow() const
SAL_DLLPRIVATE void ImplExcludeOverlapWindows(vcl::Region &rRegion) const
SAL_DLLPRIVATE void ImplInitWinClipRegion()
void SetParentClipMode(ParentClipMode nMode=ParentClipMode::NONE)
ParentClipMode GetParentClipMode() const
SAL_DLLPRIVATE void ImplUpdateSysObjChildrenClip()
SAL_DLLPRIVATE void ImplCalcOverlapRegionOverlaps(const vcl::Region &rInterRegion, vcl::Region &rRegion) const
SAL_DLLPRIVATE bool ImplSetClipFlagOverlapWindows(bool bSysObjOnlySmaller=false)
SAL_DLLPRIVATE void ImplInitWinChildClipRegion()
SAL_DLLPRIVATE void ImplClipSiblings(vcl::Region &rRegion) const
SAL_DLLPRIVATE void ImplExcludeOverlapWindows2(vcl::Region &rRegion)
SAL_DLLPRIVATE bool ImplSetClipFlag(bool bSysObjOnlySmaller=false)
SAL_DLLPRIVATE vcl::Window * ImplGetParent() const
SAL_DLLPRIVATE void ImplIntersectWindowClipRegion(vcl::Region &rRegion)
::OutputDevice const * GetOutDev() const
SAL_DLLPRIVATE vcl::Region & ImplGetWinChildClipRegion()
SAL_DLLPRIVATE void ImplUpdateSysObjOverlapsClip()
SAL_DLLPRIVATE void ImplUpdateSysObjClip()
SAL_DLLPRIVATE bool ImplClipChildren(vcl::Region &rRegion) const
std::unique_ptr< WindowImpl > mpWindowImpl
vcl::Region GetPaintRegion() const
SAL_DLLPRIVATE void ImplIntersectAndUnionOverlapWindows2(const vcl::Region &rInterRegion, vcl::Region &rRegion)
void EnableClipSiblings(bool bClipSiblings=true)
SAL_DLLPRIVATE bool ImplSetClipFlagChildren(bool bSysObjOnlySmaller)
void ExpandPaintClipRegion(const vcl::Region &rRegion)
SAL_DLLPRIVATE void ImplClipAllChildren(vcl::Region &rRegion) const
tools::Rectangle GetOutputRectPixel() const
vcl::Region GetWindowClipRegionPixel() const
SAL_DLLPRIVATE void ImplIntersectWindowRegion(vcl::Region &rRegion)
#define DBG_TESTSOLARMUTEX()
std::vector< tools::Rectangle > RectangleVector
WinBits const WB_CLIPCHILDREN