mapeditor.cpp
changeset 786 6269016c9905
parent 785 5987f9f15bac
child 787 c6bb4fdcc55f
     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());