Skip to content

Commit c0ff2f4

Browse files
lbartolettinyalldawson
authored andcommittedSep 25, 2018
Fixes #18252 - Shape digitize (and circular string) tools do not show
rubberband fill color when drawing polygons
1 parent e8c98f8 commit c0ff2f4

28 files changed

+54
-26
lines changed
 

‎src/app/qgsmaptooladdcircle.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,8 @@ void QgsMapToolAddCircle::clean()
110110
}
111111

112112
mCircle = QgsCircle();
113+
114+
QgsVectorLayer *vLayer = static_cast<QgsVectorLayer *>( QgisApp::instance()->activeLayer() );
115+
if ( vLayer )
116+
layerType = vLayer->geometryType();
113117
}

‎src/app/qgsmaptooladdcircle.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ class APP_EXPORT QgsMapToolAddCircle: public QgsMapToolCapture
5656
QgsGeometryRubberBand *mTempRubberBand = nullptr;
5757
//! Circle
5858
QgsCircle mCircle;
59+
//! Layertype which will be used for rubberband
60+
QgsWkbTypes::GeometryType layerType = QgsWkbTypes::LineGeometry;
5961

6062
};
6163

‎src/app/qgsmaptooladdcircularstring.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,10 @@ void QgsMapToolAddCircularString::deactivate()
106106

107107
void QgsMapToolAddCircularString::activate()
108108
{
109+
110+
QgsVectorLayer *vLayer = static_cast<QgsVectorLayer *>( QgisApp::instance()->activeLayer() );
111+
if ( vLayer )
112+
layerType = vLayer->geometryType();
109113
if ( mParentTool )
110114
{
111115
mParentTool->deleteTempRubberBand();
@@ -124,7 +128,7 @@ void QgsMapToolAddCircularString::activate()
124128
mPoints.append( QgsPoint( mapPoint ) );
125129
if ( !mTempRubberBand )
126130
{
127-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
131+
mTempRubberBand = createGeometryRubberBand( layerType, true );
128132
mTempRubberBand->show();
129133
}
130134
QgsCircularString *c = new QgsCircularString();

‎src/app/qgsmaptooladdcircularstring.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ class APP_EXPORT QgsMapToolAddCircularString: public QgsMapToolCapture
5959
void createCenterPointRubberBand();
6060
void updateCenterPointRubberBand( const QgsPoint &pt );
6161
void removeCenterPointRubberBand();
62+
//! Layertype which will be used for rubberband
63+
QgsWkbTypes::GeometryType layerType = QgsWkbTypes::LineGeometry;
6264
};
6365

6466
#endif // QGSMAPTOOLADDCIRCULARSTRING_H

‎src/app/qgsmaptooladdellipse.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,8 @@ void QgsMapToolAddEllipse::clean()
110110
}
111111

112112
mEllipse = QgsEllipse();
113+
114+
QgsVectorLayer *vLayer = static_cast<QgsVectorLayer *>( QgisApp::instance()->activeLayer() );
115+
if ( vLayer )
116+
layerType = vLayer->geometryType();
113117
}

‎src/app/qgsmaptooladdellipse.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ class APP_EXPORT QgsMapToolAddEllipse: public QgsMapToolCapture
5454
QgsEllipse mEllipse;
5555
//! convenient method to return the number of segments
5656
unsigned int segments( ) { return QgsSettings().value( QStringLiteral( "/qgis/digitizing/offset_quad_seg" ), 8 ).toInt() * 12; }
57+
//! Layertype which will be used for rubberband
58+
QgsWkbTypes::GeometryType layerType = QgsWkbTypes::LineGeometry;
5759

5860
};
5961

‎src/app/qgsmaptooladdrectangle.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,4 +183,8 @@ void QgsMapToolAddRectangle::clean()
183183
}
184184

185185
mRectangle = QgsBox3d();
186+
187+
QgsVectorLayer *vLayer = static_cast<QgsVectorLayer *>( QgisApp::instance()->activeLayer() );
188+
if ( vLayer )
189+
layerType = vLayer->geometryType();
186190
}

‎src/app/qgsmaptooladdrectangle.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,9 @@ class APP_EXPORT QgsMapToolAddRectangle: public QgsMapToolCapture
7777
//! Returns the side. \see mSide
7878
int side( ) const { return mSide; }
7979

80+
//! Layertype which will be used for rubberband
81+
QgsWkbTypes::GeometryType layerType = QgsWkbTypes::LineGeometry;
82+
8083
private:
8184
//! Convenient member for the azimuth of the rotated rectangle or when map is rotated.
8285
double mAzimuth = 0.0;

‎src/app/qgsmaptooladdregularpolygon.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,4 +134,9 @@ void QgsMapToolAddRegularPolygon::clean()
134134
}
135135

136136
mRegularPolygon = QgsRegularPolygon();
137+
138+
139+
QgsVectorLayer *vLayer = static_cast<QgsVectorLayer *>( QgisApp::instance()->activeLayer() );
140+
if ( vLayer )
141+
layerType = vLayer->geometryType();
137142
}

‎src/app/qgsmaptooladdregularpolygon.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ class APP_EXPORT QgsMapToolAddRegularPolygon: public QgsMapToolCapture
6262
//! Regular shape as a regular polygon
6363
QgsRegularPolygon mRegularPolygon;
6464

65+
//! Layertype which will be used for rubberband
66+
QgsWkbTypes::GeometryType layerType = QgsWkbTypes::LineGeometry;
67+
6568
};
6669

6770
#endif // QGSMAPTOOLADDREGULARPOLYGON_H

‎src/app/qgsmaptoolcircle2points.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void QgsMapToolCircle2Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
3636

3737
if ( !mPoints.isEmpty() && !mTempRubberBand )
3838
{
39-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
39+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4040
mTempRubberBand->show();
4141
}
4242
}

‎src/app/qgsmaptoolcircle2tangentspoint.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,7 @@ void QgsMapToolCircle2TangentsPoint::cadCanvasMoveEvent( QgsMapMouseEvent *e )
108108
{
109109
if ( !mTempRubberBand )
110110
{
111-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
112-
mTempRubberBand->setFillColor( QColor( 0, 0, 255 ) );
113-
mTempRubberBand->setStrokeColor( QColor( 0, 0, 255 ) );
114-
mTempRubberBand->setStrokeWidth( 2 );
111+
mTempRubberBand = createGeometryRubberBand( layerType, true );
115112
mTempRubberBand->show();
116113
}
117114
else

‎src/app/qgsmaptoolcircle3points.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void QgsMapToolCircle3Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
3737
mPoints.append( point );
3838
if ( !mPoints.isEmpty() && !mTempRubberBand )
3939
{
40-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
40+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4141
mTempRubberBand->show();
4242
}
4343
}

‎src/app/qgsmaptoolcircle3tangents.cpp

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,7 @@ void QgsMapToolCircle3Tangents::cadCanvasMoveEvent( QgsMapMouseEvent *e )
7979

8080
if ( !mTempRubberBand )
8181
{
82-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
83-
mTempRubberBand->setFillColor( QColor( 0, 0, 255 ) );
84-
mTempRubberBand->setStrokeColor( QColor( 0, 0, 255 ) );
85-
mTempRubberBand->setStrokeWidth( 2 );
82+
mTempRubberBand = createGeometryRubberBand( layerType, true );
8683
mTempRubberBand->show();
8784
}
8885
else

‎src/app/qgsmaptoolcirclecenterpoint.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void QgsMapToolCircleCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
3737

3838
if ( !mPoints.isEmpty() && !mTempRubberBand )
3939
{
40-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
40+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4141
mTempRubberBand->show();
4242
}
4343

‎src/app/qgsmaptoolcircularstringcurvepoint.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void QgsMapToolCircularStringCurvePoint::cadCanvasReleaseEvent( QgsMapMouseEvent
4343
{
4444
if ( !mTempRubberBand )
4545
{
46-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
46+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4747
mTempRubberBand->show();
4848
}
4949

@@ -57,7 +57,7 @@ void QgsMapToolCircularStringCurvePoint::cadCanvasReleaseEvent( QgsMapMouseEvent
5757
{
5858
if ( !mRubberBand )
5959
{
60-
mRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry );
60+
mRubberBand = createGeometryRubberBand( layerType );
6161
mRubberBand->show();
6262
}
6363

‎src/app/qgsmaptoolcircularstringradius.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ void QgsMapToolCircularStringRadius::recalculateRubberBand()
110110
int rubberBandSize = mPoints.size() - ( mPoints.size() + 1 ) % 2;
111111
cString->setPoints( mPoints.mid( 0, rubberBandSize ) );
112112
delete mRubberBand;
113-
mRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry );
113+
mRubberBand = createGeometryRubberBand( layerType );
114114
mRubberBand->setGeometry( cString );
115115
mRubberBand->show();
116116
}
@@ -141,7 +141,7 @@ void QgsMapToolCircularStringRadius::recalculateTempRubberBand( const QgsPointXY
141141
QgsCircularString *cString = new QgsCircularString();
142142
cString->setPoints( rubberBandPoints );
143143
delete mTempRubberBand;
144-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
144+
mTempRubberBand = createGeometryRubberBand( layerType, true );
145145
mTempRubberBand->setGeometry( cString );
146146
mTempRubberBand->show();
147147
}

‎src/app/qgsmaptoolellipsecenter2points.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void QgsMapToolEllipseCenter2Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e
4040

4141
if ( !mPoints.isEmpty() && !mTempRubberBand )
4242
{
43-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
43+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4444
mTempRubberBand->show();
4545
}
4646
}

‎src/app/qgsmaptoolellipsecenterpoint.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ void QgsMapToolEllipseCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
3636

3737
if ( !mPoints.isEmpty() && !mTempRubberBand )
3838
{
39-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
39+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4040
mTempRubberBand->show();
4141
}
4242
}

‎src/app/qgsmaptoolellipseextent.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void QgsMapToolEllipseExtent::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
3838

3939
if ( !mPoints.isEmpty() && !mTempRubberBand )
4040
{
41-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
41+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4242
mTempRubberBand->show();
4343
}
4444
}

‎src/app/qgsmaptoolellipsefoci.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ void QgsMapToolEllipseFoci::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
3838

3939
if ( !mPoints.isEmpty() && !mTempRubberBand )
4040
{
41-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
41+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4242
mTempRubberBand->show();
4343
}
4444
}

‎src/app/qgsmaptoolrectangle3points.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void QgsMapToolRectangle3Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
4040

4141
if ( !mPoints.isEmpty() && !mTempRubberBand )
4242
{
43-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
43+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4444
mTempRubberBand->show();
4545
}
4646
}

‎src/app/qgsmaptoolrectanglecenter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ void QgsMapToolRectangleCenter::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
3939

4040
if ( !mPoints.isEmpty() && !mTempRubberBand )
4141
{
42-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
42+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4343
mTempRubberBand->show();
4444
}
4545
}

‎src/app/qgsmaptoolrectangleextent.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ void QgsMapToolRectangleExtent::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
3939

4040
if ( !mPoints.isEmpty() && !mTempRubberBand )
4141
{
42-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
42+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4343
mTempRubberBand->show();
4444
}
4545
}

‎src/app/qgsmaptoolregularpolygon2points.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ void QgsMapToolRegularPolygon2Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e
4646
{
4747
if ( !mTempRubberBand )
4848
{
49-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
49+
mTempRubberBand = createGeometryRubberBand( layerType, true );
5050
mTempRubberBand->show();
5151

5252
createNumberSidesSpinBox();

‎src/app/qgsmaptoolregularpolygon2points.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class APP_EXPORT QgsMapToolRegularPolygon2Points: public QgsMapToolAddRegularPol
3030

3131
void cadCanvasReleaseEvent( QgsMapMouseEvent *e ) override;
3232
void cadCanvasMoveEvent( QgsMapMouseEvent *e ) override;
33+
3334
};
3435

3536
#endif // QGSMAPTOOLREGULARPOLYGON2POINTS_H

‎src/app/qgsmaptoolregularpolygoncentercorner.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void QgsMapToolRegularPolygonCenterCorner::cadCanvasReleaseEvent( QgsMapMouseEve
4343
{
4444
if ( !mTempRubberBand )
4545
{
46-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
46+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4747
mTempRubberBand->show();
4848

4949
createNumberSidesSpinBox();

‎src/app/qgsmaptoolregularpolygoncenterpoint.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ void QgsMapToolRegularPolygonCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEven
4343
{
4444
if ( !mTempRubberBand )
4545
{
46-
mTempRubberBand = createGeometryRubberBand( ( mode() == CapturePolygon ) ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry, true );
46+
mTempRubberBand = createGeometryRubberBand( layerType, true );
4747
mTempRubberBand->show();
4848

4949
createNumberSidesSpinBox();

0 commit comments

Comments
 (0)