diff -r 5987f9f15bac -r 6269016c9905 mapeditor.cpp --- a/mapeditor.cpp Mon Aug 03 10:42:12 2009 +0000 +++ b/mapeditor.cpp Thu Aug 06 10:42:17 2009 +0000 @@ -1310,16 +1310,25 @@ // is not yet implemented elsewhere // Here in MapEditor we can only select Branches and Images + QList treeItemsNew; + QList treeItemsOld; + QModelIndex ix; foreach (ix,newsel.indexes() ) { TreeItem *ti= static_cast(ix.internalPointer()); - if (ti->getType()!=TreeItem::Branch && ti->getType()!=TreeItem::Image ) - newsel.indexes().removeOne (ix); + if (ti->getType()==TreeItem::Branch || ti->getType()==TreeItem::Image ) + if (!treeItemsNew.contains(ti)) treeItemsNew.append (ti); + } + foreach (ix,oldsel.indexes() ) + { + TreeItem *ti= static_cast(ix.internalPointer()); + if (ti->getType()==TreeItem::Branch || ti->getType()==TreeItem::Image ) + if (!treeItemsOld.contains(ti)) treeItemsOld.append (ti); } // Trim list of selection rectangles - while (newsel.indexes().count() < selboxList.count() ) + while (treeItemsNew.count() < selboxList.count() ) delete selboxList.takeFirst(); // Take care to tmp scroll/unscroll @@ -1344,7 +1353,7 @@ } } - if (!newsel.isEmpty()) + if (!treeItemsNew.isEmpty()) { QModelIndex ix=newsel.indexes().first(); if (ix.isValid() ) @@ -1365,12 +1374,12 @@ } // Reduce rectangles - while (newsel.indexes().count() < selboxList.count() ) + while (treeItemsNew.count() < selboxList.count() ) delete selboxList.takeFirst(); // Add additonal rectangles QGraphicsRectItem *sb; - while (newsel.indexes().count() > selboxList.count() ) + while (treeItemsNew.count() > selboxList.count() ) { sb = mapScene->addRect( QRectF(0,0,0,0), @@ -1381,19 +1390,18 @@ selboxList.append (sb); } + + // Reposition rectangles - int i=0; QRectF bbox; QModelIndex index; - TreeItem *ti; LinkableMapObj *lmo; - foreach (sb,selboxList) + for (int i=0; i(index.internalPointer()); - lmo=((MapItem*)ti)->getLMO(); + lmo=((MapItem*)treeItemsNew.at(i) )->getLMO(); bbox=lmo->getBBox(); + sb=selboxList.at(i); sb->setRect ( bbox.x(),bbox.y(), bbox.width(), bbox.height());