diff options
author | Philipp Lohmann [pl] <Philipp.Lohmann@Oracle.COM> | 2011-03-15 17:37:20 +0100 |
---|---|---|
committer | Philipp Lohmann [pl] <Philipp.Lohmann@Oracle.COM> | 2011-03-15 17:37:20 +0100 |
commit | 53483b25451545ced391cd0f3cf86e8d4b7e31c7 (patch) | |
tree | 370c6b4c59f003c566487ada1710c1ff39da3150 /vcl | |
parent | 7363d8a165443b6e8da150d193949e738daa9f05 (diff) |
vcl121: #i117390# fix the fix for issue 80730
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/vcl/cursor.hxx | 2 | ||||
-rw-r--r-- | vcl/source/window/cursor.cxx | 17 | ||||
-rw-r--r-- | vcl/source/window/window.cxx | 8 | ||||
-rw-r--r-- | vcl/source/window/winproc.cxx | 4 |
4 files changed, 16 insertions, 15 deletions
diff --git a/vcl/inc/vcl/cursor.hxx b/vcl/inc/vcl/cursor.hxx index c143e49002fa..11f00145c466 100644 --- a/vcl/inc/vcl/cursor.hxx +++ b/vcl/inc/vcl/cursor.hxx @@ -69,7 +69,7 @@ public: SAL_DLLPRIVATE void ImplRestore(); DECL_DLLPRIVATE_LINK( ImplTimerHdl, AutoTimer* ); SAL_DLLPRIVATE void ImplShow( bool bDrawDirect = true, bool bRestore = false ); - SAL_DLLPRIVATE bool ImplHide(); + SAL_DLLPRIVATE bool ImplHide( bool bStopTimer ); SAL_DLLPRIVATE void ImplNew(); public: diff --git a/vcl/source/window/cursor.cxx b/vcl/source/window/cursor.cxx index c59978077412..883010c3e8d7 100644 --- a/vcl/source/window/cursor.cxx +++ b/vcl/source/window/cursor.cxx @@ -216,7 +216,7 @@ void Cursor::ImplShow( bool bDrawDirect, bool bRestore ) // ----------------------------------------------------------------------- -bool Cursor::ImplHide() +bool Cursor::ImplHide( bool i_bStopTimer ) { bool bWasCurVisible = false; if ( mpData && mpData->mpWindow ) @@ -225,6 +225,13 @@ bool Cursor::ImplHide() if ( mpData->mbCurVisible ) ImplRestore(); } + + if( mpData && i_bStopTimer ) + { + mpData->maTimer.Stop(); + mpData->mpWindow = NULL; + } + return bWasCurVisible; } @@ -328,13 +335,7 @@ void Cursor::Hide() if ( mbVisible ) { mbVisible = sal_False; - ImplHide(); - - if( mpData ) - { - mpData->maTimer.Stop(); - mpData->mpWindow = NULL; - } + ImplHide( true ); } } diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 96e787928772..792228d40459 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -2407,7 +2407,7 @@ void Window::ImplCallPaint( const Region* pRegion, sal_uInt16 nPaintFlags ) { bool bRestoreCursor = false; if ( mpWindowImpl->mpCursor ) - bRestoreCursor = mpWindowImpl->mpCursor->ImplHide(); + bRestoreCursor = mpWindowImpl->mpCursor->ImplHide( false ); mbInitClipRegion = sal_True; mpWindowImpl->mbInPaint = sal_True; @@ -2896,7 +2896,7 @@ void Window::ImplScroll( const Rectangle& rRect, ImplInvalidateAllOverlapBackgrounds(); if ( mpWindowImpl->mpCursor ) - mpWindowImpl->mpCursor->ImplHide(); + mpWindowImpl->mpCursor->ImplHide( false ); sal_uInt16 nOrgFlags = nFlags; if ( !(nFlags & (SCROLL_CHILDREN | SCROLL_NOCHILDREN)) ) @@ -4073,7 +4073,7 @@ void Window::ImplGrabFocus( sal_uInt16 nFlags ) { // Cursor hiden if ( pOldFocusWindow->mpWindowImpl->mpCursor ) - pOldFocusWindow->mpWindowImpl->mpCursor->ImplHide(); + pOldFocusWindow->mpWindowImpl->mpCursor->ImplHide( true ); } // !!!!! Wegen altem SV-Office Activate/Deavtivate Handling @@ -8054,7 +8054,7 @@ void Window::SetCursor( Cursor* pCursor ) if ( mpWindowImpl->mpCursor != pCursor ) { if ( mpWindowImpl->mpCursor ) - mpWindowImpl->mpCursor->ImplHide(); + mpWindowImpl->mpCursor->ImplHide( true ); mpWindowImpl->mpCursor = pCursor; if ( pCursor ) pCursor->ImplShow(); diff --git a/vcl/source/window/winproc.cxx b/vcl/source/window/winproc.cxx index 9cb38756e770..171c1f3ff74d 100644 --- a/vcl/source/window/winproc.cxx +++ b/vcl/source/window/winproc.cxx @@ -1793,7 +1793,7 @@ IMPL_LINK( Window, ImplAsyncFocusHdl, void*, EMPTYARG ) pSVData->maWinData.mpFocusWin = NULL; if ( pFocusWin->ImplGetWindowImpl()->mpCursor ) - pFocusWin->ImplGetWindowImpl()->mpCursor->ImplHide(); + pFocusWin->ImplGetWindowImpl()->mpCursor->ImplHide( true ); // Deaktivate rufen Window* pOldFocusWindow = pFocusWin; @@ -1900,7 +1900,7 @@ static void ImplHandleLoseFocus( Window* pWindow ) Window* pFocusWin = pWindow->ImplGetWindowImpl()->mpFrameData->mpFocusWin; if ( pFocusWin && pFocusWin->ImplGetWindowImpl()->mpCursor ) - pFocusWin->ImplGetWindowImpl()->mpCursor->ImplHide(); + pFocusWin->ImplGetWindowImpl()->mpCursor->ImplHide( true ); if( bCallDirect ) pWindow->ImplAsyncFocusHdl( NULL ); } |