summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Schäfer <ssa@openoffice.org>2002-09-16 07:39:20 +0000
committerStephan Schäfer <ssa@openoffice.org>2002-09-16 07:39:20 +0000
commitb0d4d23fe50b70110c9b506b934cde70f0a308fc (patch)
tree45df36e3fbb9e2042512f06ba6f6e8f396d8bf33
parent0c957df97d5f78332e1a0fd7cc7f2e1bd019bd87 (diff)
#100860# improved RTL scrolling
-rw-r--r--vcl/source/window/window.cxx34
1 files changed, 17 insertions, 17 deletions
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index 43b46cdcf24e..975067bb0345 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: window.cxx,v $
*
- * $Revision: 1.141 $
+ * $Revision: 1.142 $
*
- * last change: $Author: ssa $ $Date: 2002-09-16 08:00:05 $
+ * last change: $Author: ssa $ $Date: 2002-09-16 08:39:20 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -2767,15 +2767,23 @@ void Window::ImplScroll( const Rectangle& rRect,
if ( !mpFirstChild )
bScrollChilds = FALSE;
- // Paint-Bereiche anpassen
- ImplMoveAllInvalidateRegions( rRect, nHorzScroll, nVertScroll, bScrollChilds );
-
// --- RTL --- check if this window requires special action
BOOL bReMirror = ( ImplHasMirroredGraphics() && !IsRTLEnabled() );
+ Rectangle aRectMirror( rRect );
+ if( bReMirror )
+ {
+ // --- RTL --- make sure the invalidate region of this window is
+ // computed in the same coordinate space as the one from the overlap windows
+ ImplReMirror( aRectMirror );
+ }
+
+ // Paint-Bereiche anpassen
+ ImplMoveAllInvalidateRegions( aRectMirror, nHorzScroll, nVertScroll, bScrollChilds );
+
if ( !(nFlags & SCROLL_NOINVALIDATE) )
{
- ImplCalcOverlapRegion( rRect, aInvalidateRegion, !bScrollChilds, TRUE, FALSE );
+ ImplCalcOverlapRegion( aRectMirror, aInvalidateRegion, !bScrollChilds, TRUE, FALSE );
// --- RTL ---
// if the scrolling on the device is performed in the opposite direction
@@ -2789,17 +2797,9 @@ void Window::ImplScroll( const Rectangle& rRect,
}
if ( !(nFlags & SCROLL_NOWINDOWINVALIDATE) )
{
- Rectangle aRect( rRect );
- if( bReMirror )
- {
- // --- RTL --- make sure the invalidate region of this window is
- // computed in the same coordinate space as the one from the overlap windows
- ImplReMirror( aRect );
- }
-
- Rectangle aDestRect( aRect );
+ Rectangle aDestRect( aRectMirror );
aDestRect.Move( bReMirror ? -nHorzScroll : nHorzScroll, nVertScroll );
- Region aWinInvalidateRegion( aRect );
+ Region aWinInvalidateRegion( aRectMirror );
aWinInvalidateRegion.Exclude( aDestRect );
aInvalidateRegion.Union( aWinInvalidateRegion );
@@ -2846,7 +2846,7 @@ void Window::ImplScroll( const Rectangle& rRect,
}
ImplSelectClipRegion( pGraphics, aRegion, this );
- pGraphics->CopyArea( rRect.Left()+ nHorzScroll, rRect.Top()+nVertScroll,
+ pGraphics->CopyArea( rRect.Left()+nHorzScroll, rRect.Top()+nVertScroll,
rRect.Left(), rRect.Top(),
rRect.GetWidth(), rRect.GetHeight(),
SAL_COPYAREA_WINDOWINVALIDATE, this );