Skip to content

Commit d4eada7

Browse files
committed
Fix data defined buttons sometimes incorrectly show error state
(cherry-picked from 7d27b43)
1 parent 4d45218 commit d4eada7

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
@@ -280,65 +280,62 @@ void QgsHighlight::paint( QPainter* p )
280280
p->setPen( mPen );
281281
p->setBrush( mBrush );
282282

283-
switch ( mGeometry->wkbType() )
283+
switch ( mGeometry->type() )
284284
{
285-
case QGis::WKBPoint:
286-
case QGis::WKBPoint25D:
285+
case QGis::PointGeometry:
287286
{
288-
paintPoint( p, mGeometry->asPoint() );
289-
}
290-
break;
291-
292-
case QGis::WKBMultiPoint:
293-
case QGis::WKBMultiPoint25D:
294-
{
295-
QgsMultiPoint m = mGeometry->asMultiPoint();
296-
for ( int i = 0; i < m.size(); i++ )
287+
if ( !mGeometry->isMultipart() )
297288
{
298-
paintPoint( p, m[i] );
289+
paintPoint( p, mGeometry->asPoint() );
290+
}
291+
else
292+
{
293+
QgsMultiPoint m = mGeometry->asMultiPoint();
294+
for ( int i = 0; i < m.size(); i++ )
295+
{
296+
paintPoint( p, m[i] );
297+
}
299298
}
300299
}
301300
break;
302301

303-
case QGis::WKBLineString:
304-
case QGis::WKBLineString25D:
305-
{
306-
paintLine( p, mGeometry->asPolyline() );
307-
}
308-
break;
309-
310-
case QGis::WKBMultiLineString:
311-
case QGis::WKBMultiLineString25D:
302+
case QGis::LineGeometry:
312303
{
313-
QgsMultiPolyline m = mGeometry->asMultiPolyline();
314-
315-
for ( int i = 0; i < m.size(); i++ )
304+
if ( !mGeometry->isMultipart() )
316305
{
317-
paintLine( p, m[i] );
306+
paintLine( p, mGeometry->asPolyline() );
318307
}
319-
}
320-
break;
308+
else
309+
{
310+
QgsMultiPolyline m = mGeometry->asMultiPolyline();
321311

322-
case QGis::WKBPolygon:
323-
case QGis::WKBPolygon25D:
324-
{
325-
paintPolygon( p, mGeometry->asPolygon() );
312+
for ( int i = 0; i < m.size(); i++ )
313+
{
314+
paintLine( p, m[i] );
315+
}
316+
}
317+
break;
326318
}
327-
break;
328319

329-
case QGis::WKBMultiPolygon:
330-
case QGis::WKBMultiPolygon25D:
320+
case QGis::PolygonGeometry:
331321
{
332-
QgsMultiPolygon m = mGeometry->asMultiPolygon();
333-
for ( int i = 0; i < m.size(); i++ )
322+
if ( !mGeometry->isMultipart() )
323+
{
324+
paintPolygon( p, mGeometry->asPolygon() );
325+
}
326+
else
334327
{
335-
paintPolygon( p, m[i] );
328+
QgsMultiPolygon m = mGeometry->asMultiPolygon();
329+
for ( int i = 0; i < m.size(); i++ )
330+
{
331+
paintPolygon( p, m[i] );
332+
}
336333
}
334+
break;
337335
}
338-
break;
339336

340-
case QGis::WKBUnknown:
341-
default:
337+
case QGis::UnknownGeometry:
338+
case QGis::NullGeometry:
342339
return;
343340
}
344341
}

0 commit comments

Comments
 (0)