diff options
author | Takeshi Abe <tabe@fixedpoint.jp> | 2014-09-30 12:55:39 +0900 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2014-10-02 08:15:20 +0000 |
commit | 258f4ba9de5e40210f8a38817f89cf93ac25ebed (patch) | |
tree | 9e37b471b52e687942c9d6b87a2d8cd875dd8226 /sfx2 | |
parent | 2267dbba29a261c2cff7e86215d3eab10b637b3d (diff) |
fdo#75757: remove inheritance to std::vector
from SfxDockArr_Impl, typedef'ing it as boost::ptr_vector<SfxDock_Impl>.
Change-Id: Ieb4f065a836cf9314464b9d5f53a09a95a974be8
Reviewed-on: https://gerrit.libreoffice.org/11707
Reviewed-by: David Tardon <dtardon@redhat.com>
Tested-by: David Tardon <dtardon@redhat.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/dialog/splitwin.cxx | 115 | ||||
-rw-r--r-- | sfx2/source/inc/splitwin.hxx | 13 |
2 files changed, 55 insertions, 73 deletions
diff --git a/sfx2/source/dialog/splitwin.cxx b/sfx2/source/dialog/splitwin.cxx index 664cf0fa2f5d..1ead3dd172f7 100644 --- a/sfx2/source/dialog/splitwin.cxx +++ b/sfx2/source/dialog/splitwin.cxx @@ -78,26 +78,6 @@ namespace { }; } -struct SfxDock_Impl -{ - sal_uInt16 nType; - SfxDockingWindow* pWin; // SplitWindow has this window - bool bNewLine; - bool bHide; // SplitWindow had this window - long nSize; -}; - -class SfxDockArr_Impl : public std::vector<SfxDock_Impl*> -{ -public: - ~SfxDockArr_Impl() - { - for(const_iterator it = begin(); it != end(); ++it) - delete *it; - } - -}; - class SfxEmptySplitWin_Impl : public SplitWindow { /* [Description] @@ -349,8 +329,8 @@ void SfxSplitWindow::SaveConfig_Impl() sal_uInt16 n; for ( n=0; n<pDockArr->size(); n++ ) { - SfxDock_Impl *pDock = (*pDockArr)[n]; - if ( pDock->bHide || pDock->pWin ) + const SfxDock_Impl& rDock = (*pDockArr)[n]; + if ( rDock.bHide || rDock.pWin ) nCount++; } @@ -358,13 +338,13 @@ void SfxSplitWindow::SaveConfig_Impl() for ( n=0; n<pDockArr->size(); n++ ) { - SfxDock_Impl *pDock = (*pDockArr)[n]; - if ( !pDock->bHide && !pDock->pWin ) + const SfxDock_Impl& rDock = (*pDockArr)[n]; + if ( !rDock.bHide && !rDock.pWin ) continue; - if ( pDock->bNewLine ) + if ( rDock.bNewLine ) aWinData.append(",0"); aWinData.append(','); - aWinData.append(static_cast<sal_Int32>(pDock->nType)); + aWinData.append(static_cast<sal_Int32>(rDock.nType)); } OUString aWindowId("SplitWindow"); @@ -429,10 +409,10 @@ void SfxSplitWindow::Split() sal_uInt16 nCount = pDockArr->size(); for ( sal_uInt16 n=0; n<nCount; n++ ) { - SfxDock_Impl *pD = (*pDockArr)[n]; - if ( pD->pWin ) + const SfxDock_Impl& rD = (*pDockArr)[n]; + if ( rD.pWin ) { - const sal_uInt16 nId = pD->nType; + const sal_uInt16 nId = rD.nType; const long nSize = GetItemSize( nId, SWIB_FIXED ); const long nSetSize = GetItemSize( GetSet( nId ) ); Size aSize; @@ -448,7 +428,7 @@ void SfxSplitWindow::Split() aSize.Height() = nSize; } - pD->pWin->SetItemSize_Impl( aSize ); + rD.pWin->SetItemSize_Impl( aSize ); aNewOrgSizes.push_back( std::pair< sal_uInt16, long >( nId, nSize ) ); } @@ -486,8 +466,8 @@ void SfxSplitWindow::InsertWindow( SfxDockingWindow* pDockWin, const Size& rSize sal_uInt16 nCount = pDockArr->size(); for ( sal_uInt16 n=0; n<nCount; n++ ) { - SfxDock_Impl *pDock = (*pDockArr)[n]; - if ( pDock->bNewLine ) + SfxDock_Impl& rDock = (*pDockArr)[n]; + if ( rDock.bNewLine ) { // The window opens a new line if ( pFoundDock ) @@ -499,13 +479,13 @@ void SfxSplitWindow::InsertWindow( SfxDockingWindow* pDockWin, const Size& rSize bNewLine = true; } - if ( pDock->pWin ) + if ( rDock.pWin ) { // Does there exist a window now at this position if ( bNewLine && !pFoundDock ) { // Not known until now in which real line it is located - GetWindowPos( pDock->pWin, nL, nPos ); + GetWindowPos( rDock.pWin, nL, nPos ); nLine = (short) nL; } @@ -521,10 +501,10 @@ void SfxSplitWindow::InsertWindow( SfxDockingWindow* pDockWin, const Size& rSize break; } - if ( pDock->nType == pDockWin->GetType() ) + if ( rDock.nType == pDockWin->GetType() ) { - DBG_ASSERT( !pFoundDock && !pDock->pWin, "Window already exists!"); - pFoundDock = pDock; + DBG_ASSERT( !pFoundDock && !rDock.pWin, "Window already exists!"); + pFoundDock = &rDock; if ( !bNewLine ) break; else @@ -564,27 +544,21 @@ void SfxSplitWindow::InsertWindow( SfxDockingWindow* pDockWin, const Size& rSize void SfxSplitWindow::ReleaseWindow_Impl(SfxDockingWindow *pDockWin, bool bSave) { // The docking window is no longer stored in the internal data. - SfxDock_Impl *pDock=0; sal_uInt16 nCount = pDockArr->size(); - bool bFound = false; for ( sal_uInt16 n=0; n<nCount; n++ ) { - pDock = (*pDockArr)[n]; - if ( pDock->nType == pDockWin->GetType() ) + const SfxDock_Impl& rDock = (*pDockArr)[n]; + if ( rDock.nType == pDockWin->GetType() ) { - if ( pDock->bNewLine && n<nCount-1 ) - (*pDockArr)[n+1]->bNewLine = true; + if ( rDock.bNewLine && n<nCount-1 ) + (*pDockArr)[n+1].bNewLine = true; // Window has a position, this we forget - bFound = true; pDockArr->erase(pDockArr->begin() + n); break; } } - if ( bFound ) - delete pDock; - if ( bSave ) SaveConfig_Impl(); } @@ -644,9 +618,9 @@ void SfxSplitWindow::InsertWindow( SfxDockingWindow* pDockWin, const Size& rSize sal_uInt16 nInsertPos = 0; for ( sal_uInt16 n=0; n<nCount; n++ ) { - SfxDock_Impl *pD = (*pDockArr)[n]; + SfxDock_Impl& rD = (*pDockArr)[n]; - if (pD->pWin) + if (rD.pWin) { // A docked window has been found. If no suitable window behind the // the desired insertion point s found, then insertion is done at @@ -654,17 +628,17 @@ void SfxSplitWindow::InsertWindow( SfxDockingWindow* pDockWin, const Size& rSize nInsertPos = nCount; nLastWindowIdx = n; sal_uInt16 nL=0, nP=0; - GetWindowPos( pD->pWin, nL, nP ); + GetWindowPos( rD.pWin, nL, nP ); if ( (nL == nLine && nP == nPos) || nL > nLine ) { DBG_ASSERT( nL == nLine || bNewLine || nPos > 0, "Wrong Parameter!" ); if ( nL == nLine && nPos == 0 && !bNewLine ) { - DBG_ASSERT(pD->bNewLine, "No new line?"); + DBG_ASSERT(rD.bNewLine, "No new line?"); // The posption is pushed to nPos==0 - pD->bNewLine = false; + rD.bNewLine = false; pDock->bNewLine = true; } @@ -798,10 +772,10 @@ void SfxSplitWindow::InsertWindow_Impl( SfxDock_Impl* pDock, sal_uInt16 nCount = pDockArr->size(); for ( sal_uInt16 n=0; n<nCount; ++n ) { - SfxDock_Impl *pD = (*pDockArr)[n]; - if ( pD->pWin ) + const SfxDock_Impl& rD = (*pDockArr)[n]; + if ( rD.pWin ) { - const sal_uInt16 nId = pD->nType; + const sal_uInt16 nId = rD.nType; const long nSize = GetItemSize( nId, SWIB_FIXED ); aNewOrgSizes.push_back( std::pair< sal_uInt16, long >( nId, nSize ) ); } @@ -852,15 +826,14 @@ void SfxSplitWindow::RemoveWindow( SfxDockingWindow* pDockWin, bool bHide ) pWorkWin->ArrangeAutoHideWindows( this ); } - SfxDock_Impl *pDock=0; sal_uInt16 nCount = pDockArr->size(); for ( sal_uInt16 n=0; n<nCount; n++ ) { - pDock = (*pDockArr)[n]; - if ( pDock->nType == pDockWin->GetType() ) + SfxDock_Impl& rDock = (*pDockArr)[n]; + if ( rDock.nType == pDockWin->GetType() ) { - pDock->pWin = 0; - pDock->bHide = bHide; + rDock.pWin = 0; + rDock.bHide = bHide; break; } } @@ -1273,9 +1246,9 @@ void SfxSplitWindow::Show_Impl() sal_uInt16 nCount = pDockArr->size(); for ( sal_uInt16 n=0; n<nCount; n++ ) { - SfxDock_Impl *pDock = (*pDockArr)[n]; - if ( pDock->pWin ) - pDock->pWin->FadeIn( pEmptyWin->bFadeIn ); + const SfxDock_Impl& rDock = (*pDockArr)[n]; + if ( rDock.pWin ) + rDock.pWin->FadeIn( pEmptyWin->bFadeIn ); } } @@ -1293,8 +1266,8 @@ bool SfxSplitWindow::ActivateNextChild_Impl( bool bForward ) // Determine the active window for ( n=0; n<nCount; n++ ) { - SfxDock_Impl *pD = (*pDockArr)[n]; - if ( pD->pWin && pD->pWin->HasChildPathFocus() ) + const SfxDock_Impl& rD = (*pDockArr)[n]; + if ( rD.pWin && rD.pWin->HasChildPathFocus() ) break; } @@ -1309,10 +1282,10 @@ bool SfxSplitWindow::ActivateNextChild_Impl( bool bForward ) // Search for next window for ( sal_uInt16 nNext=n; nNext<nCount; nNext++ ) { - SfxDock_Impl *pD = (*pDockArr)[nNext]; - if ( pD->pWin ) + const SfxDock_Impl& rD = (*pDockArr)[nNext]; + if ( rD.pWin ) { - pD->pWin->GrabFocus(); + rD.pWin->GrabFocus(); return true; } } @@ -1322,10 +1295,10 @@ bool SfxSplitWindow::ActivateNextChild_Impl( bool bForward ) // Search for previous window for ( sal_uInt16 nNext=n; nNext--; ) { - SfxDock_Impl *pD = (*pDockArr)[nNext]; - if ( pD->pWin ) + const SfxDock_Impl& rD = (*pDockArr)[nNext]; + if ( rD.pWin ) { - pD->pWin->GrabFocus(); + rD.pWin->GrabFocus(); return true; } } diff --git a/sfx2/source/inc/splitwin.hxx b/sfx2/source/inc/splitwin.hxx index 76b690f332a4..05bbd61138a4 100644 --- a/sfx2/source/inc/splitwin.hxx +++ b/sfx2/source/inc/splitwin.hxx @@ -24,9 +24,18 @@ class SfxWorkWindow; class SfxDockingWindow; -class SfxDockArr_Impl; class SfxEmptySplitWin_Impl; -struct SfxDock_Impl; + +struct SfxDock_Impl +{ + sal_uInt16 nType; + SfxDockingWindow* pWin; // SplitWindow has this window + bool bNewLine; + bool bHide; // SplitWindow had this window + long nSize; +}; + +typedef boost::ptr_vector<SfxDock_Impl> SfxDockArr_Impl; class SfxSplitWindow : public SplitWindow { |