From 385c3a6bfad6c976ba9c62425f8828980e43c614 Mon Sep 17 00:00:00 2001 From: Vladimir Glazounov Date: Tue, 28 Aug 2007 12:44:51 +0000 Subject: INTEGRATION: CWS navorder (1.6.370); FILE MERGED 2007/07/05 23:05:58 af 1.6.370.2: RESYNC: (1.6-1.7); FILE MERGED 2007/06/22 14:50:20 af 1.6.370.1: #i68097# Added support for user defined navigation order. --- svx/source/svdraw/svditer.cxx | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) (limited to 'svx') diff --git a/svx/source/svdraw/svditer.cxx b/svx/source/svdraw/svditer.cxx index 8fba925fdede..8a278427b141 100644 --- a/svx/source/svdraw/svditer.cxx +++ b/svx/source/svdraw/svditer.cxx @@ -4,9 +4,9 @@ * * $RCSfile: svditer.cxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: hr $ $Date: 2007-06-27 19:02:58 $ + * last change: $Author: vg $ $Date: 2007-08-28 13:44:51 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -62,7 +62,16 @@ SdrObjListIter::SdrObjListIter(const SdrObjList& rObjList, SdrIterMode eMode, BO mnIndex(0L), mbReverse(bReverse) { - ImpProcessObjectList(rObjList, eMode); + ImpProcessObjectList(rObjList, eMode, TRUE); + Reset(); +} + +SdrObjListIter::SdrObjListIter(const SdrObjList& rObjList, BOOL bUseZOrder, SdrIterMode eMode, BOOL bReverse) +: maObjList(1024, 64, 64), + mnIndex(0L), + mbReverse(bReverse) +{ + ImpProcessObjectList(rObjList, eMode, bUseZOrder); Reset(); } @@ -72,17 +81,27 @@ SdrObjListIter::SdrObjListIter( const SdrObject& rObj, SdrIterMode eMode, BOOL b mbReverse(bReverse) { if ( rObj.ISA( SdrObjGroup ) ) - ImpProcessObjectList(*rObj.GetSubList(), eMode); + ImpProcessObjectList(*rObj.GetSubList(), eMode, TRUE); else maObjList.Insert( (void*)&rObj, LIST_APPEND ); Reset(); } -void SdrObjListIter::ImpProcessObjectList(const SdrObjList& rObjList, SdrIterMode eMode) +void SdrObjListIter::ImpProcessObjectList(const SdrObjList& rObjList, SdrIterMode eMode, BOOL bUseZOrder) { for(sal_uInt32 a(0L); a < rObjList.GetObjCount(); a++) { - SdrObject* pObj = rObjList.GetObj(a); + SdrObject* pObj = NULL; + if (bUseZOrder) + pObj = rObjList.GetObj(a); + else + pObj = rObjList.GetObjectForNavigationPosition(a); + if (pObj == NULL) + { + OSL_ASSERT(pObj!=NULL); + continue; + } + sal_Bool bIsGroup(pObj->IsGroupObject()); // #99190# 3D objects are no group objects, IsGroupObject() @@ -94,7 +113,7 @@ void SdrObjListIter::ImpProcessObjectList(const SdrObjList& rObjList, SdrIterMod maObjList.Insert(pObj, LIST_APPEND); if(bIsGroup && eMode != IM_FLAT) - ImpProcessObjectList(*pObj->GetSubList(), eMode); + ImpProcessObjectList(*pObj->GetSubList(), eMode, bUseZOrder); } } -- cgit