1.1 --- a/mapeditor.cpp Mon Aug 03 10:42:12 2009 +0000
1.2 +++ b/mapeditor.cpp Thu Aug 06 10:42:17 2009 +0000
1.3 @@ -1310,16 +1310,25 @@
1.4 // is not yet implemented elsewhere
1.5
1.6 // Here in MapEditor we can only select Branches and Images
1.7 + QList <TreeItem*> treeItemsNew;
1.8 + QList <TreeItem*> treeItemsOld;
1.9 +
1.10 QModelIndex ix;
1.11 foreach (ix,newsel.indexes() )
1.12 {
1.13 TreeItem *ti= static_cast<TreeItem*>(ix.internalPointer());
1.14 - if (ti->getType()!=TreeItem::Branch && ti->getType()!=TreeItem::Image )
1.15 - newsel.indexes().removeOne (ix);
1.16 + if (ti->getType()==TreeItem::Branch || ti->getType()==TreeItem::Image )
1.17 + if (!treeItemsNew.contains(ti)) treeItemsNew.append (ti);
1.18 + }
1.19 + foreach (ix,oldsel.indexes() )
1.20 + {
1.21 + TreeItem *ti= static_cast<TreeItem*>(ix.internalPointer());
1.22 + if (ti->getType()==TreeItem::Branch || ti->getType()==TreeItem::Image )
1.23 + if (!treeItemsOld.contains(ti)) treeItemsOld.append (ti);
1.24 }
1.25
1.26 // Trim list of selection rectangles
1.27 - while (newsel.indexes().count() < selboxList.count() )
1.28 + while (treeItemsNew.count() < selboxList.count() )
1.29 delete selboxList.takeFirst();
1.30
1.31 // Take care to tmp scroll/unscroll
1.32 @@ -1344,7 +1353,7 @@
1.33 }
1.34 }
1.35
1.36 - if (!newsel.isEmpty())
1.37 + if (!treeItemsNew.isEmpty())
1.38 {
1.39 QModelIndex ix=newsel.indexes().first();
1.40 if (ix.isValid() )
1.41 @@ -1365,12 +1374,12 @@
1.42 }
1.43
1.44 // Reduce rectangles
1.45 - while (newsel.indexes().count() < selboxList.count() )
1.46 + while (treeItemsNew.count() < selboxList.count() )
1.47 delete selboxList.takeFirst();
1.48
1.49 // Add additonal rectangles
1.50 QGraphicsRectItem *sb;
1.51 - while (newsel.indexes().count() > selboxList.count() )
1.52 + while (treeItemsNew.count() > selboxList.count() )
1.53 {
1.54 sb = mapScene->addRect(
1.55 QRectF(0,0,0,0),
1.56 @@ -1381,19 +1390,18 @@
1.57 selboxList.append (sb);
1.58 }
1.59
1.60 +
1.61 +
1.62 // Reposition rectangles
1.63 - int i=0;
1.64 QRectF bbox;
1.65 QModelIndex index;
1.66
1.67 - TreeItem *ti;
1.68 LinkableMapObj *lmo;
1.69 - foreach (sb,selboxList)
1.70 + for (int i=0; i<treeItemsNew.count();++i)
1.71 {
1.72 - index=newsel.indexes().at(i);
1.73 - ti= static_cast<TreeItem*>(index.internalPointer());
1.74 - lmo=((MapItem*)ti)->getLMO();
1.75 + lmo=((MapItem*)treeItemsNew.at(i) )->getLMO();
1.76 bbox=lmo->getBBox();
1.77 + sb=selboxList.at(i);
1.78 sb->setRect (
1.79 bbox.x(),bbox.y(),
1.80 bbox.width(), bbox.height());