Skip to content

Commit

Permalink
Fix identify menu highlight only works with simple geometry types
Browse files Browse the repository at this point in the history
Fix #15625
  • Loading branch information
nyalldawson committed Oct 3, 2016
1 parent 7d27b43 commit 5b3f10a
Showing 1 changed file with 38 additions and 41 deletions.
79 changes: 38 additions & 41 deletions src/gui/qgshighlight.cpp
Expand Up @@ -282,65 +282,62 @@ void QgsHighlight::paint( QPainter* p )
p->setPen( mPen );
p->setBrush( mBrush );

switch ( mGeometry->wkbType() )
switch ( mGeometry->type() )
{
case QgsWkbTypes::Point:
case QgsWkbTypes::Point25D:
case QgsWkbTypes::PointGeometry:
{
paintPoint( p, mGeometry->asPoint() );
}
break;

case QgsWkbTypes::MultiPoint:
case QgsWkbTypes::MultiPoint25D:
{
QgsMultiPoint m = mGeometry->asMultiPoint();
for ( int i = 0; i < m.size(); i++ )
if ( !mGeometry->isMultipart() )
{
paintPoint( p, m[i] );
paintPoint( p, mGeometry->asPoint() );
}
else
{
QgsMultiPoint m = mGeometry->asMultiPoint();
for ( int i = 0; i < m.size(); i++ )
{
paintPoint( p, m[i] );
}
}
}
break;

case QgsWkbTypes::LineString:
case QgsWkbTypes::LineString25D:
{
paintLine( p, mGeometry->asPolyline() );
}
break;

case QgsWkbTypes::MultiLineString:
case QgsWkbTypes::MultiLineString25D:
case QgsWkbTypes::LineGeometry:
{
QgsMultiPolyline m = mGeometry->asMultiPolyline();

for ( int i = 0; i < m.size(); i++ )
if ( !mGeometry->isMultipart() )
{
paintLine( p, m[i] );
paintLine( p, mGeometry->asPolyline() );
}
}
break;
else
{
QgsMultiPolyline m = mGeometry->asMultiPolyline();

case QgsWkbTypes::Polygon:
case QgsWkbTypes::Polygon25D:
{
paintPolygon( p, mGeometry->asPolygon() );
for ( int i = 0; i < m.size(); i++ )
{
paintLine( p, m[i] );
}
}
break;
}
break;

case QgsWkbTypes::MultiPolygon:
case QgsWkbTypes::MultiPolygon25D:
case QgsWkbTypes::PolygonGeometry:
{
QgsMultiPolygon m = mGeometry->asMultiPolygon();
for ( int i = 0; i < m.size(); i++ )
if ( !mGeometry->isMultipart() )
{
paintPolygon( p, mGeometry->asPolygon() );
}
else
{
paintPolygon( p, m[i] );
QgsMultiPolygon m = mGeometry->asMultiPolygon();
for ( int i = 0; i < m.size(); i++ )
{
paintPolygon( p, m[i] );
}
}
break;
}
break;

case QgsWkbTypes::Unknown:
default:
case QgsWkbTypes::UnknownGeometry:
case QgsWkbTypes::NullGeometry:
return;
}
}
Expand Down

1 comment on commit 5b3f10a

@nyalldawson
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@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.