--- workwin.hxx 2007-05-03 11:36:17.078125000 +0200 +++ workwin.hxx 2007-05-03 09:55:50.109375000 +0200 @@ -343,7 +343,7 @@ void HideChilds_Impl(); void Close_Impl(); BOOL PrepareClose_Impl(); - virtual void ArrangeChilds_Impl(); + virtual void ArrangeChilds_Impl( BOOL bForce = FALSE ); void DeleteControllers_Impl(); void SaveStatus_Impl(); void HidePopups_Impl(BOOL bHide, BOOL bParent=FALSE, USHORT nId=0); @@ -408,7 +408,7 @@ SfxFrame* pFrame; public: SfxFrameWorkWin_Impl( Window* pWin, SfxFrame* pFrm, SfxFrame* pMaster ); - virtual void ArrangeChilds_Impl(); + virtual void ArrangeChilds_Impl( BOOL bForce ); virtual void UpdateObjectBars_Impl(); virtual Rectangle GetTopRect_Impl(); }; --- workwin.cxx 2007-05-03 11:38:03.312500000 +0200 +++ workwin.cxx 2007-05-03 10:00:32.500000000 +0200 @@ -326,11 +326,13 @@ { m_pWrkWin->MakeVisible_Impl( TRUE ); m_pWrkWin->ShowChilds_Impl(); + m_pWrkWin->ArrangeChilds_Impl( TRUE ); } else if ( eLayoutEvent == css::frame::LayoutManagerEvents::INVISIBLE ) { m_pWrkWin->MakeVisible_Impl( FALSE ); m_pWrkWin->HideChilds_Impl(); + m_pWrkWin->ArrangeChilds_Impl( TRUE ); } else if ( eLayoutEvent == css::frame::LayoutManagerEvents::LOCK ) { @@ -824,14 +826,14 @@ //==================================================================== // Virtuelle Methode zum Anordnen der Childfenster. -void SfxWorkWindow::ArrangeChilds_Impl() +void SfxWorkWindow::ArrangeChilds_Impl( BOOL /*bForce*/ ) { Arrange_Impl(); } -void SfxFrameWorkWin_Impl::ArrangeChilds_Impl() +void SfxFrameWorkWin_Impl::ArrangeChilds_Impl( BOOL bForce ) { - if ( pFrame->IsClosing_Impl() || m_nLock ) + if ( pFrame->IsClosing_Impl() || ( m_nLock && !bForce )) return; SfxInPlaceClient *pClient = 0; @@ -848,7 +850,10 @@ SvBorder aBorder; if ( nChilds ) - aBorder = Arrange_Impl(); + { + if ( IsVisible_Impl() ) + aBorder = Arrange_Impl(); + } // Wenn das aktuelle Dokument der Applikation einen IPClient enth"alt, mu\s // dem dazugeh"origen Objekt durch SetTopToolFramePixel der zur Verf"ugung @@ -1154,7 +1159,7 @@ { DBG_CHKTHIS(SfxWorkWindow, 0); - if ( !pWorkWin->IsReallyVisible() && !pWorkWin->IsReallyShown() ) + if ( !IsVisible_Impl() || ( !pWorkWin->IsReallyVisible() && !pWorkWin->IsReallyShown() )) return; SfxChild_Impl *pCli = 0; @@ -1353,7 +1358,7 @@ pWork = pWork->GetParent_Impl(); } - ArrangeChilds_Impl(); + ArrangeChilds_Impl( FALSE ); pWork = pParent; while ( pWork )