diff options
author | Mathias Bauer <mba@openoffice.org> | 2001-02-19 10:38:20 +0000 |
---|---|---|
committer | Mathias Bauer <mba@openoffice.org> | 2001-02-19 10:38:20 +0000 |
commit | a5fedad2074623f993217249acfa91e7087dc558 (patch) | |
tree | e8759536c10ca0c70940f32ec4d59a2efd63d94d /sfx2 | |
parent | a6a56f7c772568a7734f91d382b7517c285832d3 (diff) |
#83349#: SaveStatus when DeletingControllers; #82739#: EndAutoShow must look at the mouse position
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/appl/workwin.cxx | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/sfx2/source/appl/workwin.cxx b/sfx2/source/appl/workwin.cxx index 7d5f5a965548..ce4353046f6f 100644 --- a/sfx2/source/appl/workwin.cxx +++ b/sfx2/source/appl/workwin.cxx @@ -2,9 +2,9 @@ * * $RCSfile: workwin.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: mba $ $Date: 2000-11-27 09:21:25 $ + * last change: $Author: mba $ $Date: 2001-02-19 11:38:20 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -411,6 +411,24 @@ void SfxWorkWindow::ChangeWindow_Impl( Window *pNew ) } } +void SfxWorkWindow::SaveStatus_Impl() +{ + USHORT nCount = pChildWins->Count(); + for ( USHORT n=0; n<nCount; n++ ) + { + SfxChildWin_Impl* pCW = (*pChildWins)[n]; + SfxChildWindow *pChild = pCW->pWin; + if (pChild) + { + BOOL bTask = ( pCW->aInfo.nFlags & SFX_CHILDWIN_TASK ) != 0; + pCW->aInfo = pChild->GetInfo(); + if ( bTask ) + pCW->aInfo.nFlags |= SFX_CHILDWIN_TASK; + SaveStatus_Impl(pChild, pCW->aInfo); + } + } +} + //-------------------------------------------------------------------- // Hilfsmethode zum Freigeben der Childlisten. Wenn danach nicht der dtor // aufgerufen wird, sondern weiter gearbeitet wird, mu\s wie im ctor von @@ -439,6 +457,12 @@ void SfxWorkWindow::DeleteControllers_Impl() SfxChildWindow *pChild = pCW->pWin; if (pChild) { + BOOL bTask = ( pCW->aInfo.nFlags & SFX_CHILDWIN_TASK ) != 0; + pCW->aInfo = pChild->GetInfo(); + if ( bTask ) + pCW->aInfo.nFlags |= SFX_CHILDWIN_TASK; + SaveStatus_Impl(pChild, pCW->aInfo); + pChild->Hide(); // Wenn das ChildWindow ein direktes Childfenster ist und nicht @@ -2643,16 +2667,21 @@ BOOL SfxWorkWindow::IsAutoHideMode( const SfxSplitWindow *pSplitWin ) } -void SfxWorkWindow::EndAutoShow_Impl() +void SfxWorkWindow::EndAutoShow_Impl( Point aPos ) { if ( pParent ) - pParent->EndAutoShow_Impl(); + pParent->EndAutoShow_Impl( aPos ); for ( USHORT n=0; n<SFX_SPLITWINDOWS_MAX; n++ ) { SfxSplitWindow *p = pSplit[n]; if ( p && p->IsAutoHide() ) - p->FadeOut(); + { + Point aLocalPos = p->ScreenToOutputPixel( aPos ); + Rectangle aRect( Point(), p->GetSizePixel() ); + if ( !aRect.IsInside( aLocalPos ) ) + p->FadeOut(); + } } } |