diff -uNr Old/dockwin.cxx New/dockwin.cxx --- Old/dockwin.cxx 2007-05-09 15:06:22.000000000 +0800 +++ New/dockwin.cxx 2007-05-09 15:05:42.000000000 +0800 @@ -570,6 +570,9 @@ pImp->nPos = pImp->nDockPos = 0; pImp->bNewLine = FALSE; pImp->SetLastAlignment(SFX_ALIGN_NOALIGNMENT); + pTimer=new Timer; + pTimer->SetTimeout(50); + pTimer->SetTimeoutHdl(LINK(this,SfxDockingWindow,TimerHdl)); // DBG_ASSERT(pMgr,"DockingWindow erfordert ein SfxChildWindow!"); } @@ -606,7 +609,10 @@ pImp->nLine = pImp->nDockLine = 0; pImp->nPos = pImp->nDockPos = 0; pImp->bNewLine = FALSE; - pImp->SetLastAlignment(SFX_ALIGN_NOALIGNMENT); + pImp->SetLastAlignment(SFX_ALIGN_NOALIGNMENT); + pTimer=new Timer; + pTimer->SetTimeout(50); + pTimer->SetTimeoutHdl(LINK(this,SfxDockingWindow,TimerHdl)); // DBG_ASSERT(pMgr,"DockingWindow erfordert ein SfxChildWindow!"); } @@ -895,6 +901,7 @@ { ReleaseChildWindow_Impl(); delete pImp; + delete pTimer; } void SfxDockingWindow::ReleaseChildWindow_Impl() @@ -1598,12 +1605,19 @@ void SfxDockingWindow::Move() { + pTimer->Start(); +} + +IMPL_LINK( SfxDockingWindow, TimerHdl, Timer*, pTimer) +{ + pTimer->Stop(); if ( IsReallyVisible() && IsFloatingMode() ) - { + { SfxChildIdentifier eIdent = SFX_CHILDWIN_DOCKINGWINDOW; if ( pImp->bSplitable ) eIdent = SFX_CHILDWIN_SPLITWINDOW; SfxWorkWindow *pWorkWin = pBindings->GetWorkWindow_Impl(); - pWorkWin->ConfigChild_Impl( eIdent, SFX_ALIGNDOCKINGWINDOW, pMgr->GetType() ); + pWorkWin->ConfigChild_Impl( eIdent, SFX_ALIGNDOCKINGWINDOW, pMgr->GetType() ); } + return 0; } diff -uNr Old/dockwin.hxx New/dockwin.hxx --- Old/dockwin.hxx 2007-05-09 14:40:30.000000000 +0800 +++ New/dockwin.hxx 2007-05-09 10:42:32.000000000 +0800 @@ -50,6 +50,7 @@ #include #endif #include "childwin.hxx" +#include class SfxSplitWindow; class SfxDockingWindow_Impl; @@ -63,6 +64,7 @@ Size aFloatSize; SfxChildWindow* pMgr; SfxDockingWindow_Impl* pImp; + Timer* pTimer; SAL_DLLPRIVATE SfxDockingWindow(SfxDockingWindow &); // not defined SAL_DLLPRIVATE void operator =(SfxDockingWindow &); // not defined @@ -121,6 +123,7 @@ virtual long Notify( NotifyEvent& rNEvt ); virtual void FadeIn( BOOL ); void AutoShow( BOOL bShow = TRUE ); + DECL_LINK( TimerHdl, Timer* ); #if _SOLAR__PRIVATE SAL_DLLPRIVATE void Initialize_Impl();