@@ -124,9 +124,7 @@ void QgsMapToolSelectRadius::canvasMoveEvent( QgsMapMouseEvent *e )
124
124
125
125
if ( !mRubberBand )
126
126
{
127
- mRubberBand = qgis::make_unique< QgsRubberBand >( mCanvas , QgsWkbTypes::PolygonGeometry );
128
- mRubberBand ->setFillColor ( mFillColor );
129
- mRubberBand ->setStrokeColor ( mStrokeColor );
127
+ createRubberBand ();
130
128
}
131
129
132
130
updateRadiusFromEdge ( radiusEdge );
@@ -156,9 +154,7 @@ void QgsMapToolSelectRadius::canvasReleaseEvent( QgsMapMouseEvent *e )
156
154
{
157
155
if ( !mRubberBand )
158
156
{
159
- mRubberBand = qgis::make_unique< QgsRubberBand >( mCanvas , QgsWkbTypes::PolygonGeometry );
160
- mRubberBand ->setFillColor ( mFillColor );
161
- mRubberBand ->setStrokeColor ( mStrokeColor );
157
+ createRubberBand ();
162
158
}
163
159
QgsPointXY radiusEdge = e->snapPoint ();
164
160
updateRadiusFromEdge ( radiusEdge );
@@ -205,6 +201,9 @@ void QgsMapToolSelectRadius::keyReleaseEvent( QKeyEvent *e )
205
201
206
202
void QgsMapToolSelectRadius::updateRubberband ( const double &radius )
207
203
{
204
+ if ( !mRubberBand )
205
+ createRubberBand ();
206
+
208
207
mRubberBand ->reset ( QgsWkbTypes::PolygonGeometry );
209
208
for ( int i = 0 ; i <= RADIUS_SEGMENTS; ++i )
210
209
{
@@ -262,6 +261,13 @@ void QgsMapToolSelectRadius::createRotationWidget()
262
261
connect ( mDistanceWidget , &QgsDistanceWidget::distanceEditingCanceled, this , &QgsMapToolSelectRadius::cancel );
263
262
}
264
263
264
+ void QgsMapToolSelectRadius::createRubberBand ()
265
+ {
266
+ mRubberBand = qgis::make_unique< QgsRubberBand >( mCanvas , QgsWkbTypes::PolygonGeometry );
267
+ mRubberBand ->setFillColor ( mFillColor );
268
+ mRubberBand ->setStrokeColor ( mStrokeColor );
269
+ }
270
+
265
271
void QgsMapToolSelectRadius::deleteRotationWidget ()
266
272
{
267
273
if ( mDistanceWidget )
0 commit comments