mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
Merge pull request #1972 from naihil/rubberband-visibility-fix
Don`t change current visibility flag of rubberband on updates
This commit is contained in:
commit
892f142e28
@ -182,6 +182,7 @@ void QgsRubberBand::addPoint( const QgsPoint & p, bool doUpdate /* = true */, in
|
||||
|
||||
if ( doUpdate )
|
||||
{
|
||||
setVisible( true );
|
||||
updateRect();
|
||||
update();
|
||||
}
|
||||
@ -418,6 +419,7 @@ void QgsRubberBand::addGeometry( QgsGeometry* geom, QgsVectorLayer* layer )
|
||||
return;
|
||||
}
|
||||
|
||||
setVisible( true );
|
||||
updateRect();
|
||||
update();
|
||||
}
|
||||
@ -567,7 +569,6 @@ void QgsRubberBand::updateRect()
|
||||
QgsRectangle rect( topLeft.x(), topLeft.y(), topLeft.x() + r.width()*res, topLeft.y() - r.height()*res );
|
||||
|
||||
setRect( rect );
|
||||
setVisible( true );
|
||||
}
|
||||
|
||||
void QgsRubberBand::updatePosition( )
|
||||
|
@ -46,6 +46,7 @@ class TestQgsRubberband : public QObject
|
||||
|
||||
void testAddSingleMultiGeometries(); //test for #7728
|
||||
void testBoundingRect(); //test for #12392
|
||||
void testVisibility(); //test for 12486
|
||||
|
||||
private:
|
||||
QgsMapCanvas* mCanvas;
|
||||
@ -153,6 +154,46 @@ void TestQgsRubberband::testBoundingRect()
|
||||
|
||||
}
|
||||
|
||||
void TestQgsRubberband::testVisibility()
|
||||
{
|
||||
mRubberband = new QgsRubberBand( mCanvas, mPolygonLayer->geometryType() );
|
||||
|
||||
// Visibility is set to false by default
|
||||
QCOMPARE( mRubberband->isVisible(), false );
|
||||
|
||||
// Check visibility after setting to empty geometry
|
||||
QSharedPointer<QgsGeometry> emptyGeom( new QgsGeometry );
|
||||
mRubberband->setToGeometry( emptyGeom.data(), mPolygonLayer );
|
||||
QCOMPARE( mRubberband->isVisible(), false );
|
||||
|
||||
// Check that visibility changes
|
||||
mRubberband->setVisible( true );
|
||||
mRubberband->setToGeometry( emptyGeom.data(), mPolygonLayer );
|
||||
QCOMPARE( mRubberband->isVisible(), false );
|
||||
|
||||
// Check visibility after setting to valid geometry
|
||||
QSharedPointer<QgsGeometry> geom( QgsGeometry::fromWkt(
|
||||
"POLYGON((10 10,10 30,30 30,30 10,10 10))"
|
||||
) );
|
||||
mRubberband->setToGeometry( geom.data(), mPolygonLayer );
|
||||
QCOMPARE( mRubberband->isVisible(), true );
|
||||
|
||||
// Add point without update
|
||||
mRubberband->reset( true );
|
||||
mRubberband->addPoint( QgsPoint( 10, 10 ), false );
|
||||
QCOMPARE( mRubberband->isVisible(), false );
|
||||
|
||||
// Add point with update
|
||||
mRubberband->addPoint( QgsPoint( 20, 20 ), true );
|
||||
QCOMPARE( mRubberband->isVisible(), true );
|
||||
|
||||
// Check visibility after zoom (should not be changed)
|
||||
mRubberband->setVisible( false );
|
||||
mCanvas->zoomIn();
|
||||
QCOMPARE( mRubberband->isVisible(), false );
|
||||
|
||||
}
|
||||
|
||||
|
||||
QTEST_MAIN( TestQgsRubberband )
|
||||
#include "testqgsrubberband.moc"
|
||||
|
Loading…
x
Reference in New Issue
Block a user