diff options
author | Chris Sherlock <chris.sherlock79@gmail.com> | 2014-04-25 03:08:37 +1000 |
---|---|---|
committer | Chris Sherlock <chris.sherlock79@gmail.com> | 2014-04-25 03:18:09 +1000 |
commit | 66b2880ad51b69188ea5c2e56a682ed320c53d1e (patch) | |
tree | 0a00669cc7aa6aac654b1f1f2232956a894f98d5 | |
parent | ba0bb5ef675ccae12ca9e7ae3ec6a194b0cc8533 (diff) |
fdo#74702 Move GetActiveClipRegion code into Window
Window checks to see if the window is currently being painted, then it
checks to see if there is an active clipping region (which it needs to
intersect with).
Printer and VirtualDevice don't have this need, so they just return the
clipping region.
Change-Id: I1a9af237940f5add725c783c02a193c9e3329fa6
-rw-r--r-- | include/vcl/window.hxx | 1 | ||||
-rw-r--r-- | vcl/source/outdev/clipping.cxx | 17 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 16 |
3 files changed, 18 insertions, 16 deletions
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx index 40abbab53cbb..56f6886b27b4 100644 --- a/include/vcl/window.hxx +++ b/include/vcl/window.hxx @@ -568,6 +568,7 @@ protected: virtual void ReleaseGraphics( bool bRelease = true ) SAL_OVERRIDE; virtual void InitClipRegion() SAL_OVERRIDE; + virtual Region GetActiveClipRegion() const SAL_OVERRIDE; // FIXME: this is a hack to workaround missing layout functionality SAL_DLLPRIVATE void ImplAdjustNWFSizes(); diff --git a/vcl/source/outdev/clipping.cxx b/vcl/source/outdev/clipping.cxx index a1e3526fd4b6..299c272e3262 100644 --- a/vcl/source/outdev/clipping.cxx +++ b/vcl/source/outdev/clipping.cxx @@ -167,22 +167,7 @@ Region OutputDevice::GetClipRegion() const Region OutputDevice::GetActiveClipRegion() const { - - if ( GetOutDevType() == OUTDEV_WINDOW ) - { - Region aRegion(true); - Window* pWindow = (Window*)this; - if ( pWindow->mpWindowImpl->mbInPaint ) - { - aRegion = *(pWindow->mpWindowImpl->mpPaintRegion); - aRegion.Move( -mnOutOffX, -mnOutOffY ); - } - if ( mbClipRegion ) - aRegion.Intersect( maRegion ); - return PixelToLogic( aRegion ); - } - else - return GetClipRegion(); + return GetClipRegion(); } void OutputDevice::MoveClipRegion( long nHorzMove, long nVertMove ) diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index e65fe3824608..a4fe2037f7a0 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -439,6 +439,22 @@ void Window::InitClipRegion() mbInitClipRegion = false; } +Region Window::GetActiveClipRegion() const +{ + Region aRegion(true); + + if ( mpWindowImpl->mbInPaint ) + { + aRegion = *(mpWindowImpl->mpPaintRegion); + aRegion.Move( -mnOutOffX, -mnOutOffY ); + } + + if ( mbClipRegion ) + aRegion.Intersect( maRegion ); + + return PixelToLogic( aRegion ); +} + void Window::EnableRTL ( bool bEnable ) { StateChanged( STATE_CHANGE_MIRRORING ); |