summaryrefslogtreecommitdiff
path: root/sfx2
diff options
context:
space:
mode:
authorMathias Bauer <mba@openoffice.org>2001-02-19 10:38:20 +0000
committerMathias Bauer <mba@openoffice.org>2001-02-19 10:38:20 +0000
commita5fedad2074623f993217249acfa91e7087dc558 (patch)
treee8759536c10ca0c70940f32ec4d59a2efd63d94d /sfx2
parenta6a56f7c772568a7734f91d382b7517c285832d3 (diff)
#83349#: SaveStatus when DeletingControllers; #82739#: EndAutoShow must look at the mouse position
Diffstat (limited to 'sfx2')
-rw-r--r--sfx2/source/appl/workwin.cxx39
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();
+ }
}
}