From e93001816144dbc6edcbaffdb076c8a3d5cf05e1 Mon Sep 17 00:00:00 2001 From: Rafael Dominguez Date: Sun, 7 Apr 2013 21:17:51 -0430 Subject: Fetch thumbnails position and id from filter array instead. Change-Id: I5d49bf90e9eab402f2c6e58ca46302e2a2c72c84 --- sfx2/source/control/thumbnailview.cxx | 41 +++++++++++++++++++++----------- sfx2/source/control/thumbnailviewacc.cxx | 2 +- 2 files changed, 28 insertions(+), 15 deletions(-) (limited to 'sfx2') diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx index fd4ae27919dd..f2643a632145 100644 --- a/sfx2/source/control/thumbnailview.cxx +++ b/sfx2/source/control/thumbnailview.cxx @@ -967,8 +967,20 @@ void ThumbnailView::RemoveItem( sal_uInt16 nItemId ) if ( nPos == THUMBNAILVIEW_ITEM_NOTFOUND ) return; - if ( nPos < mItemList.size() ) { - ValueItemList::iterator it = mItemList.begin(); + if ( nPos < mFilteredItemList.size() ) { + + // delete item from the thumbnail list + for (size_t i = 0, n = mItemList.size(); i < n; ++i) + { + if (mItemList[i]->mnId == nItemId) + { + mItemList.erase(mItemList.begin()+i); + break; + } + } + + // delete item from the filter item list + ValueItemList::iterator it = mFilteredItemList.begin(); ::std::advance( it, nPos ); if ((*it)->isSelected()) @@ -978,7 +990,8 @@ void ThumbnailView::RemoveItem( sal_uInt16 nItemId ) } delete *it; - mItemList.erase( it ); + mFilteredItemList.erase( it ); + mpStartSelRange = mFilteredItemList.end(); } // reset variables @@ -1022,8 +1035,8 @@ void ThumbnailView::updateItems (const std::vector &items) size_t ThumbnailView::GetItemPos( sal_uInt16 nItemId ) const { - for ( size_t i = 0, n = mItemList.size(); i < n; ++i ) { - if ( mItemList[i]->mnId == nItemId ) { + for ( size_t i = 0, n = mFilteredItemList.size(); i < n; ++i ) { + if ( mFilteredItemList[i]->mnId == nItemId ) { return i; } } @@ -1032,7 +1045,7 @@ size_t ThumbnailView::GetItemPos( sal_uInt16 nItemId ) const sal_uInt16 ThumbnailView::GetItemId( size_t nPos ) const { - return ( nPos < mItemList.size() ) ? mItemList[nPos]->mnId : 0 ; + return ( nPos < mFilteredItemList.size() ) ? mFilteredItemList[nPos]->mnId : 0 ; } sal_uInt16 ThumbnailView::GetItemId( const Point& rPos ) const @@ -1069,11 +1082,11 @@ void ThumbnailView::SelectItem( sal_uInt16 nItemId ) if ( nItemPos == THUMBNAILVIEW_ITEM_NOTFOUND ) return; - ThumbnailViewItem* pItem = mItemList[nItemPos]; + ThumbnailViewItem* pItem = mFilteredItemList[nItemPos]; if (!pItem->isSelected()) { - mItemList[nItemPos]->setSelection(true); - maItemStateHdl.Call(mItemList[nItemPos]); + pItem->setSelection(true); + maItemStateHdl.Call(pItem); if (IsReallyVisible() && IsUpdateMode()) Invalidate(); @@ -1134,11 +1147,11 @@ void ThumbnailView::DeselectItem( sal_uInt16 nItemId ) if ( nItemPos == THUMBNAILVIEW_ITEM_NOTFOUND ) return; - ThumbnailViewItem* pItem = mItemList[nItemPos]; + ThumbnailViewItem* pItem = mFilteredItemList[nItemPos]; if (pItem->isSelected()) { - mItemList[nItemPos]->setSelection(false); - maItemStateHdl.Call(mItemList[nItemPos]); + pItem->setSelection(false); + maItemStateHdl.Call(pItem); if (IsReallyVisible() && IsUpdateMode()) Invalidate(); @@ -1153,7 +1166,7 @@ bool ThumbnailView::IsItemSelected( sal_uInt16 nItemId ) const if ( nItemPos == THUMBNAILVIEW_ITEM_NOTFOUND ) return false; - ThumbnailViewItem* pItem = mItemList[nItemPos]; + ThumbnailViewItem* pItem = mFilteredItemList[nItemPos]; return pItem->isSelected(); } @@ -1179,7 +1192,7 @@ OUString ThumbnailView::GetItemText( sal_uInt16 nItemId ) const size_t nPos = GetItemPos( nItemId ); if ( nPos != THUMBNAILVIEW_ITEM_NOTFOUND ) - return mItemList[nPos]->maTitle; + return mFilteredItemList[nPos]->maTitle; return OUString(); } diff --git a/sfx2/source/control/thumbnailviewacc.cxx b/sfx2/source/control/thumbnailviewacc.cxx index 2d21a5bc7f5a..fc4311536262 100644 --- a/sfx2/source/control/thumbnailviewacc.cxx +++ b/sfx2/source/control/thumbnailviewacc.cxx @@ -348,7 +348,7 @@ uno::Reference< accessibility::XAccessible > SAL_CALL ThumbnailViewAcc::getAcces if( THUMBNAILVIEW_ITEM_NONEITEM != nItemPos ) { - ThumbnailViewItem *const pItem = mpParent->mItemList[nItemPos]; + ThumbnailViewItem *const pItem = mpParent->mFilteredItemList[nItemPos]; xRet = pItem->GetAccessible( mbIsTransientChildrenDisabled ); } } -- cgit v1.2.3