Skip to content

Commit d3319b0

Browse files
author
mhugent
committedNov 3, 2010
Apply non-string parts of patch #2938
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@14497 c8812cc2-4d05-0410-92ff-de0c093fc19c

File tree

3 files changed

+18
-31
lines changed

3 files changed

+18
-31
lines changed
 

‎src/app/qgsmaptoolselect.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@
2929

3030

3131
QgsMapToolSelect::QgsMapToolSelect( QgsMapCanvas* canvas )
32-
: QgsMapTool( canvas )
32+
: QgsMapTool( canvas )
3333
{
3434
mCursor = Qt::ArrowCursor;
3535
}
3636

3737
void QgsMapToolSelect::canvasReleaseEvent( QMouseEvent * e )
3838
{
3939
QgsVectorLayer* vlayer = QgsMapToolSelectUtils::getCurrentVectorLayer( mCanvas );
40-
if ( vlayer == NULL )
40+
if( vlayer == NULL )
4141
{
4242
return;
4343
}
@@ -46,9 +46,8 @@ void QgsMapToolSelect::canvasReleaseEvent( QMouseEvent * e )
4646
QgsMapToolSelectUtils::expandSelectRectangle( selectRect, vlayer, e->pos() );
4747
QgsMapToolSelectUtils::setRubberBand( mCanvas, selectRect, &rubberBand );
4848
QgsGeometry* selectGeom = rubberBand.asGeometry();
49-
bool addSelection = e->modifiers() & Qt::ControlModifier ? true : false;
50-
bool substractSelection = e->modifiers() & Qt::ShiftModifier ? true : false;
51-
QgsMapToolSelectUtils::setSelectFeatures( mCanvas, selectGeom, false, addSelection, substractSelection, true );
49+
bool doDifference = e->modifiers() & Qt::ControlModifier ? true : false;
50+
QgsMapToolSelectUtils::setSelectFeatures( mCanvas, selectGeom, false, doDifference, true );
5251
delete selectGeom;
5352
rubberBand.reset( true );
5453
}

‎src/app/qgsmaptoolselectutils.cpp

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,7 @@ void QgsMapToolSelectUtils::expandSelectRectangle( QRect& selectRect,
8181
void QgsMapToolSelectUtils::setSelectFeatures( QgsMapCanvas* canvas,
8282
QgsGeometry* selectGeometry,
8383
bool doContains,
84-
bool addSelection,
85-
bool substractSelection,
84+
bool doDifference,
8685
bool singleSelect )
8786
{
8887
if( selectGeometry->type() != QGis::Polygon )
@@ -124,8 +123,7 @@ void QgsMapToolSelectUtils::setSelectFeatures( QgsMapCanvas* canvas,
124123
QgsDebugMsg( "Selection layer: " + vlayer->name() );
125124
QgsDebugMsg( "Selection polygon: " + selectGeomTrans.exportToWkt() );
126125
QgsDebugMsg( "doContains: " + QString( doContains ? "T" : "F" ) );
127-
QgsDebugMsg( "addSelection: " + QString( addSelection ? "T" : "F" ) );
128-
QgsDebugMsg( "substractSelection: " + QString( substractSelection ? "T" : "F" ) );
126+
QgsDebugMsg( "doDifference: " + QString( doDifference ? "T" : "F" ) );
129127

130128
vlayer->select( QgsAttributeList(), selectGeomTrans.boundingBox(), true, true );
131129

@@ -161,20 +159,10 @@ void QgsMapToolSelectUtils::setSelectFeatures( QgsMapCanvas* canvas,
161159
newSelectedFeatures.insert( closestFeatureId );
162160
}
163161

164-
QgsDebugMsg( "Number of selected features: " + QString::number( newSelectedFeatures.size() ) );
162+
QgsDebugMsg( "Number of new selected features: " + QString::number( newSelectedFeatures.size() ) );
165163

166164
QgsFeatureIds layerSelectedFeatures;
167-
if( addSelection )
168-
{
169-
layerSelectedFeatures = vlayer->selectedFeaturesIds();
170-
QgsFeatureIds::const_iterator i = newSelectedFeatures.constEnd();
171-
while( i != newSelectedFeatures.constBegin() )
172-
{
173-
--i;
174-
layerSelectedFeatures.insert( *i );
175-
}
176-
}
177-
else if( substractSelection )
165+
if( doDifference )
178166
{
179167
layerSelectedFeatures = vlayer->selectedFeaturesIds();
180168
QgsFeatureIds::const_iterator i = newSelectedFeatures.constEnd();
@@ -185,6 +173,10 @@ void QgsMapToolSelectUtils::setSelectFeatures( QgsMapCanvas* canvas,
185173
{
186174
layerSelectedFeatures.remove( *i );
187175
}
176+
else
177+
{
178+
layerSelectedFeatures.insert( *i );
179+
}
188180
}
189181
}
190182
else
@@ -198,8 +190,7 @@ void QgsMapToolSelectUtils::setSelectFeatures( QgsMapCanvas* canvas,
198190

199191
void QgsMapToolSelectUtils::setSelectFeatures( QgsMapCanvas* canvas, QgsGeometry* selectGeometry, QMouseEvent * e )
200192
{
201-
bool doContains = e->modifiers() & Qt::AltModifier ? true : false;
202-
bool addSelection = e->modifiers() & Qt::ControlModifier ? true : false;
203-
bool substractSelection = e->modifiers() & Qt::ShiftModifier ? true : false;
204-
setSelectFeatures( canvas, selectGeometry, doContains, addSelection, substractSelection );
193+
bool doContains = e->modifiers() & Qt::ShiftModifier ? true : false;
194+
bool doDifference = e->modifiers() & Qt::ControlModifier ? true : false;
195+
setSelectFeatures( canvas, selectGeometry, doContains, doDifference );
205196
}

‎src/app/qgsmaptoolselectutils.h

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,17 +40,14 @@ namespace QgsMapToolSelectUtils
4040
must be in terms of the canvas coordinate system.
4141
@param doContains Features will only be selected if contained within the
4242
selection rubber band.
43-
@param addSelection New selected features will be added to the layer's
44-
currently selected features.
45-
@param substractSelection New selected features will be subtracted from
46-
the layer's currently selected features.
43+
@param doDifference Take the symmetric difference of the the current selected
44+
features and the new features found within the provided selectGeometry.
4745
@param singleSelect Only selects the closest feature to the selectGeometry.
4846
*/
4947
void setSelectFeatures( QgsMapCanvas* canvas,
5048
QgsGeometry* selectGeometry,
5149
bool doContains = true,
52-
bool addSelection = false,
53-
bool substractSelection = false,
50+
bool doDifference = false,
5451
bool singleSelect = false );
5552

5653
/**

0 commit comments

Comments
 (0)
Please sign in to comment.