summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2007-08-28 12:44:51 +0000
committerVladimir Glazounov <vg@openoffice.org>2007-08-28 12:44:51 +0000
commit385c3a6bfad6c976ba9c62425f8828980e43c614 (patch)
tree1e08b6f8d28a14ca89b8342461e3aab9572612db /svx
parentf8e4141a7a467f1e2a460c4309bad9b5b88db392 (diff)
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.
Diffstat (limited to 'svx')
-rw-r--r--svx/source/svdraw/svditer.cxx33
1 files changed, 26 insertions, 7 deletions
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);
}
}