Skip to content

Commit 5b3f10a

Browse files
committedOct 3, 2016
Fix identify menu highlight only works with simple geometry types
Fix #15625
1 parent 7d27b43 commit 5b3f10a

File tree

1 file changed

+38
-41
lines changed

1 file changed

+38
-41
lines changed
 

‎src/gui/qgshighlight.cpp

Lines changed: 38 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -282,65 +282,62 @@ void QgsHighlight::paint( QPainter* p )
282282
p->setPen( mPen );
283283
p->setBrush( mBrush );
284284

285-
switch ( mGeometry->wkbType() )
285+
switch ( mGeometry->type() )
286286
{
287-
case QgsWkbTypes::Point:
288-
case QgsWkbTypes::Point25D:
287+
case QgsWkbTypes::PointGeometry:
289288
{
290-
paintPoint( p, mGeometry->asPoint() );
291-
}
292-
break;
293-
294-
case QgsWkbTypes::MultiPoint:
295-
case QgsWkbTypes::MultiPoint25D:
296-
{
297-
QgsMultiPoint m = mGeometry->asMultiPoint();
298-
for ( int i = 0; i < m.size(); i++ )
289+
if ( !mGeometry->isMultipart() )
299290
{
300-
paintPoint( p, m[i] );
291+
paintPoint( p, mGeometry->asPoint() );
292+
}
293+
else
294+
{
295+
QgsMultiPoint m = mGeometry->asMultiPoint();
296+
for ( int i = 0; i < m.size(); i++ )
297+
{
298+
paintPoint( p, m[i] );
299+
}
301300
}
302301
}
303302
break;
304303

305-
case QgsWkbTypes::LineString:
306-
case QgsWkbTypes::LineString25D:
307-
{
308-
paintLine( p, mGeometry->asPolyline() );
309-
}
310-
break;
311-
312-
case QgsWkbTypes::MultiLineString:
313-
case QgsWkbTypes::MultiLineString25D:
304+
case QgsWkbTypes::LineGeometry:
314305
{
315-
QgsMultiPolyline m = mGeometry->asMultiPolyline();
316-
317-
for ( int i = 0; i < m.size(); i++ )
306+
if ( !mGeometry->isMultipart() )
318307
{
319-
paintLine( p, m[i] );
308+
paintLine( p, mGeometry->asPolyline() );
320309
}
321-
}
322-
break;
310+
else
311+
{
312+
QgsMultiPolyline m = mGeometry->asMultiPolyline();
323313

324-
case QgsWkbTypes::Polygon:
325-
case QgsWkbTypes::Polygon25D:
326-
{
327-
paintPolygon( p, mGeometry->asPolygon() );
314+
for ( int i = 0; i < m.size(); i++ )
315+
{
316+
paintLine( p, m[i] );
317+
}
318+
}
319+
break;
328320
}
329-
break;
330321

331-
case QgsWkbTypes::MultiPolygon:
332-
case QgsWkbTypes::MultiPolygon25D:
322+
case QgsWkbTypes::PolygonGeometry:
333323
{
334-
QgsMultiPolygon m = mGeometry->asMultiPolygon();
335-
for ( int i = 0; i < m.size(); i++ )
324+
if ( !mGeometry->isMultipart() )
325+
{
326+
paintPolygon( p, mGeometry->asPolygon() );
327+
}
328+
else
336329
{
337-
paintPolygon( p, m[i] );
330+
QgsMultiPolygon m = mGeometry->asMultiPolygon();
331+
for ( int i = 0; i < m.size(); i++ )
332+
{
333+
paintPolygon( p, m[i] );
334+
}
338335
}
336+
break;
339337
}
340-
break;
341338

342-
case QgsWkbTypes::Unknown:
343-
default:
339+
case QgsWkbTypes::UnknownGeometry:
340+
case QgsWkbTypes::NullGeometry:
344341
return;
345342
}
346343
}

1 commit comments

Comments
 (1)

nyalldawson commented on Oct 3, 2016

@nyalldawson
CollaboratorAuthor

@elpaso Can you take at look at the random test failure here - https://dash.orfeo-toolbox.org/testDetails.php?test=47162161&build=247256 ? Consider PyQgsServerWFST on notice ;)

Please sign in to comment.