Skip to content

Commit

Permalink
correctly handle case when the capture is not done on a vector layer …
Browse files Browse the repository at this point in the history
…(annotation, mesh, …)
  • Loading branch information
3nids committed Jan 28, 2022
1 parent 2635d42 commit 8f74823
Show file tree
Hide file tree
Showing 36 changed files with 131 additions and 115 deletions.
9 changes: 5 additions & 4 deletions src/app/maptools/qgsmaptoolshapecircle2points.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -49,16 +49,18 @@ QgsMapToolShapeAbstract *QgsMapToolShapeCircle2PointsMetadata::factory( QgsMapTo
}


bool QgsMapToolShapeCircle2Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
bool QgsMapToolShapeCircle2Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{

if ( e->button() == Qt::LeftButton )
{
if ( mPoints.isEmpty() )
mPoints.append( mParentTool->mapPoint( *e ) );

if ( !mTempRubberBand )
{
mTempRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType(), true );
QgsWkbTypes::GeometryType type = mode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->show();
}
}
Expand All @@ -72,9 +74,8 @@ bool QgsMapToolShapeCircle2Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e, c
return false;
}

void QgsMapToolShapeCircle2Points::cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
void QgsMapToolShapeCircle2Points::cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )

if ( !mTempRubberBand )
return;
Expand Down
4 changes: 2 additions & 2 deletions src/app/maptools/qgsmaptoolshapecircle2points.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,8 @@ class APP_EXPORT QgsMapToolShapeCircle2Points : public QgsMapToolShapeCircleAbst
: QgsMapToolShapeCircleAbstract( QgsMapToolShapeCircle2PointsMetadata::TOOL_ID, parentTool )
{}

bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
};

#endif // QGSMAPTOOLSHAPECIRCLE2POINTS_H
9 changes: 5 additions & 4 deletions src/app/maptools/qgsmaptoolshapecircle2tangentspoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,9 @@ QgsMapToolShapeCircle2TangentsPoint::~QgsMapToolShapeCircle2TangentsPoint()
deleteRadiusSpinBox();
}

bool QgsMapToolShapeCircle2TangentsPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
bool QgsMapToolShapeCircle2TangentsPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )
Q_UNUSED( mode )

EdgesOnlyFilter filter;
const QgsPointLocator::Match match = mParentTool->canvas()->snappingUtils()->snapToMap( mParentTool->mapPoint( *e ), &filter );
Expand Down Expand Up @@ -109,7 +109,7 @@ bool QgsMapToolShapeCircle2TangentsPoint::cadCanvasReleaseEvent( QgsMapMouseEven
return false;
}

void QgsMapToolShapeCircle2TangentsPoint::cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
void QgsMapToolShapeCircle2TangentsPoint::cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
const QgsPoint mapPoint( e->mapPoint() );

Expand All @@ -120,7 +120,8 @@ void QgsMapToolShapeCircle2TangentsPoint::cadCanvasMoveEvent( QgsMapMouseEvent *
{
if ( !mTempRubberBand )
{
mTempRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType(), true );
QgsWkbTypes::GeometryType type = mode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->show();
}
else
Expand Down
4 changes: 2 additions & 2 deletions src/app/maptools/qgsmaptoolshapecircle2tangentspoint.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ class QgsMapToolShapeCircle2TangentsPoint: public QgsMapToolShapeCircleAbstract
QgsMapToolShapeCircle2TangentsPoint( QgsMapToolCapture *parentTool ) : QgsMapToolShapeCircleAbstract( QgsMapToolShapeCircle2TangentsPointMetadata::TOOL_ID, parentTool ) {}
~QgsMapToolShapeCircle2TangentsPoint() override;

bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;

void clean() override;

Expand Down
9 changes: 5 additions & 4 deletions src/app/maptools/qgsmaptoolshapecircle3points.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,16 @@ QgsMapToolShapeAbstract *QgsMapToolShapeCircle3PointsMetadata::factory( QgsMapTo
return new QgsMapToolShapeCircle3Points( parentTool );
}

bool QgsMapToolShapeCircle3Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
bool QgsMapToolShapeCircle3Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
if ( e->button() == Qt::LeftButton )
{
if ( mPoints.size() < 2 )
mPoints.append( mParentTool->mapPoint( *e ) );
if ( !mPoints.isEmpty() && !mTempRubberBand )
{
mTempRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType(), true );
QgsWkbTypes::GeometryType type = mode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->show();
}
}
Expand All @@ -72,9 +73,9 @@ bool QgsMapToolShapeCircle3Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e, c
return false;
}

void QgsMapToolShapeCircle3Points::cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
void QgsMapToolShapeCircle3Points::cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )
Q_UNUSED( mode )

if ( !mTempRubberBand )
return;
Expand Down
4 changes: 2 additions & 2 deletions src/app/maptools/qgsmaptoolshapecircle3points.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ class APP_EXPORT QgsMapToolShapeCircle3Points: public QgsMapToolShapeCircleAbstr
public:
QgsMapToolShapeCircle3Points( QgsMapToolCapture *parentTool ) : QgsMapToolShapeCircleAbstract( QgsMapToolShapeCircle3PointsMetadata::TOOL_ID, parentTool ) {}

bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
};

#endif // QGSMAPTOOLSHAPECIRCLE3POINTS_H
8 changes: 4 additions & 4 deletions src/app/maptools/qgsmaptoolshapecircle3tangents.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,8 @@ static QgsPoint getFirstPointOnParallels( const QgsPoint p1_line1, const QgsPoin
return QgsPoint();
}

bool QgsMapToolShapeCircle3Tangents::cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
bool QgsMapToolShapeCircle3Tangents::cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )

const QgsPoint point = mParentTool->mapPoint( *e );

Expand Down Expand Up @@ -115,7 +114,7 @@ bool QgsMapToolShapeCircle3Tangents::cadCanvasReleaseEvent( QgsMapMouseEvent *e,
return false;
}

void QgsMapToolShapeCircle3Tangents::cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
void QgsMapToolShapeCircle3Tangents::cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
const QgsPoint point = mParentTool->mapPoint( *e );

Expand All @@ -124,7 +123,8 @@ void QgsMapToolShapeCircle3Tangents::cadCanvasMoveEvent( QgsMapMouseEvent *e, co

if ( !mTempRubberBand )
{
mTempRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType(), true );
QgsWkbTypes::GeometryType type = mode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->show();
}
else
Expand Down
4 changes: 2 additions & 2 deletions src/app/maptools/qgsmaptoolshapecircle3tangents.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ class QgsMapToolShapeCircle3Tangents: public QgsMapToolShapeCircleAbstract
public:
QgsMapToolShapeCircle3Tangents( QgsMapToolCapture *parentTool ) : QgsMapToolShapeCircleAbstract( QgsMapToolShapeCircle3TangentsMetadata::TOOL_ID, parentTool ) {}

bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void clean() override;

private:
Expand Down
9 changes: 5 additions & 4 deletions src/app/maptools/qgsmaptoolshapecirclecenterpoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ QgsMapToolShapeAbstract *QgsMapToolShapeCircleCenterPointMetadata::factory( QgsM
}


bool QgsMapToolShapeCircleCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
bool QgsMapToolShapeCircleCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
const QgsPoint point = mParentTool->mapPoint( *e );

Expand All @@ -61,7 +61,8 @@ bool QgsMapToolShapeCircleCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *

if ( !mTempRubberBand )
{
mTempRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType(), true );
QgsWkbTypes::GeometryType type = mode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->show();
}

Expand All @@ -75,9 +76,9 @@ bool QgsMapToolShapeCircleCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *
return false;
}

void QgsMapToolShapeCircleCenterPoint::cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
void QgsMapToolShapeCircleCenterPoint::cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )
Q_UNUSED( mode )

const QgsPoint point = mParentTool->mapPoint( *e );

Expand Down
4 changes: 2 additions & 2 deletions src/app/maptools/qgsmaptoolshapecirclecenterpoint.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ class APP_EXPORT QgsMapToolShapeCircleCenterPoint: public QgsMapToolShapeCircleA
public:
QgsMapToolShapeCircleCenterPoint( QgsMapToolCapture *parentTool ) : QgsMapToolShapeCircleAbstract( QgsMapToolShapeCircleCenterPointMetadata::TOOL_ID, parentTool ) {}

bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
};

#endif // QGSMAPTOOLSHAPECIRCLECENTERPOINT_H
7 changes: 3 additions & 4 deletions src/app/maptools/qgsmaptoolshapecircularstringabstract.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,16 +97,15 @@ void QgsMapToolShapeCircularStringAbstract::keyReleaseEvent( QKeyEvent *e )
}
}

void QgsMapToolShapeCircularStringAbstract::activate( const QgsPoint &lastCapturedMapPoint )
void QgsMapToolShapeCircularStringAbstract::activate( QgsMapToolCapture::CaptureMode mode, const QgsPoint &lastCapturedMapPoint )
{
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mParentTool->layer() );

if ( mPoints.isEmpty() && !lastCapturedMapPoint.isEmpty() )
{
mPoints.append( lastCapturedMapPoint );
if ( !mTempRubberBand )
{
mTempRubberBand = mParentTool->createGeometryRubberBand( vlayer->geometryType(), true );
QgsWkbTypes::GeometryType type = mode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->show();
}
QgsCircularString *c = new QgsCircularString();
Expand Down
2 changes: 1 addition & 1 deletion src/app/maptools/qgsmaptoolshapecircularstringabstract.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class APP_EXPORT QgsMapToolShapeCircularStringAbstract: public QgsMapToolShapeAb
void keyPressEvent( QKeyEvent *e ) override;
void keyReleaseEvent( QKeyEvent *e ) override;

void activate( const QgsPoint &lastCapturedMapPoint ) override;
void activate( QgsMapToolCapture::CaptureMode mode, const QgsPoint &lastCapturedMapPoint ) override;

void clean() override;

Expand Down
16 changes: 8 additions & 8 deletions src/app/maptools/qgsmaptoolshapecircularstringradius.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,9 @@ void QgsMapToolShapeCircularStringRadius::deactivate()
clean();
}

bool QgsMapToolShapeCircularStringRadius::cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
bool QgsMapToolShapeCircularStringRadius::cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )
mCaptureMode = mode;

const QgsPoint point = mParentTool->mapPoint( *e );

Expand Down Expand Up @@ -115,9 +115,9 @@ bool QgsMapToolShapeCircularStringRadius::cadCanvasReleaseEvent( QgsMapMouseEven
return false;
}

void QgsMapToolShapeCircularStringRadius::cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
void QgsMapToolShapeCircularStringRadius::cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )
mCaptureMode = mode;

if ( !mPoints.isEmpty() )
{
Expand All @@ -134,8 +134,8 @@ void QgsMapToolShapeCircularStringRadius::recalculateRubberBand()
const int rubberBandSize = mPoints.size() - ( mPoints.size() + 1 ) % 2;
cString->setPoints( mPoints.mid( 0, rubberBandSize ) );
delete mRubberBand;
QgsVectorLayer *layer = qobject_cast<QgsVectorLayer *>( mParentTool->layer() );
mRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType() );
QgsWkbTypes::GeometryType type = mCaptureMode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mRubberBand = mParentTool->createGeometryRubberBand( type );
mRubberBand->setGeometry( cString );
mRubberBand->show();
}
Expand Down Expand Up @@ -166,8 +166,8 @@ void QgsMapToolShapeCircularStringRadius::recalculateTempRubberBand( const QgsPo
QgsCircularString *cString = new QgsCircularString();
cString->setPoints( rubberBandPoints );
delete mTempRubberBand;
QgsVectorLayer *layer = qobject_cast<QgsVectorLayer *>( mParentTool->layer() );
mTempRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType(), true );
QgsWkbTypes::GeometryType type = mCaptureMode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->setGeometry( cString );
mTempRubberBand->show();
}
Expand Down
5 changes: 3 additions & 2 deletions src/app/maptools/qgsmaptoolshapecircularstringradius.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ class APP_EXPORT QgsMapToolShapeCircularStringRadius: public QgsMapToolShapeCirc
, mRadius( 0.0 )
{}

bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void deactivate() override;

private slots:
Expand All @@ -61,6 +61,7 @@ class APP_EXPORT QgsMapToolShapeCircularStringRadius: public QgsMapToolShapeCirc
QgsPoint mTemporaryEndPoint;
double mRadius;
QDoubleSpinBox *mRadiusSpinBox = nullptr;
QgsMapToolCapture::CaptureMode mCaptureMode = QgsMapToolCapture::CaptureMode::CaptureLine;

//! recalculate the rubberband
void recalculateRubberBand();
Expand Down
9 changes: 5 additions & 4 deletions src/app/maptools/qgsmaptoolshapeellipsecenter2points.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ QgsMapToolShapeAbstract *QgsMapToolShapeEllipseCenter2PointsMetadata::factory( Q
return new QgsMapToolShapeEllipseCenter2Points( parentTool );
}

bool QgsMapToolShapeEllipseCenter2Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
bool QgsMapToolShapeEllipseCenter2Points::cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
const QgsPoint point = mParentTool->mapPoint( *e );
if ( e->button() == Qt::LeftButton )
Expand All @@ -62,7 +62,8 @@ bool QgsMapToolShapeEllipseCenter2Points::cadCanvasReleaseEvent( QgsMapMouseEven

if ( !mPoints.isEmpty() && !mTempRubberBand )
{
mTempRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType(), true );
QgsWkbTypes::GeometryType type = mode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->show();
}
}
Expand All @@ -75,9 +76,9 @@ bool QgsMapToolShapeEllipseCenter2Points::cadCanvasReleaseEvent( QgsMapMouseEven
return false;
}

void QgsMapToolShapeEllipseCenter2Points::cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
void QgsMapToolShapeEllipseCenter2Points::cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )
Q_UNUSED( mode )

const QgsPoint point = mParentTool->mapPoint( *e );

Expand Down
4 changes: 2 additions & 2 deletions src/app/maptools/qgsmaptoolshapeellipsecenter2points.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ class APP_EXPORT QgsMapToolShapeEllipseCenter2Points: public QgsMapToolShapeElli
: QgsMapToolShapeEllipseAbstract( QgsMapToolShapeEllipseCenter2PointsMetadata::TOOL_ID, parentTool )
{}

bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
};

#endif // QGSMAPTOOLSHAPEELLIPSECENTER2POINTS_H
9 changes: 5 additions & 4 deletions src/app/maptools/qgsmaptoolshapeellipsecenterpoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ QgsMapToolShapeAbstract *QgsMapToolShapeEllipseCenterPointMetadata::factory( Qgs
}


bool QgsMapToolShapeEllipseCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
bool QgsMapToolShapeEllipseCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
const QgsPoint point = mParentTool->mapPoint( *e );

Expand All @@ -61,7 +61,8 @@ bool QgsMapToolShapeEllipseCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent

if ( !mTempRubberBand )
{
mTempRubberBand = mParentTool->createGeometryRubberBand( layer->geometryType(), true );
QgsWkbTypes::GeometryType type = mode == QgsMapToolCapture::CapturePolygon ? QgsWkbTypes::PolygonGeometry : QgsWkbTypes::LineGeometry;
mTempRubberBand = mParentTool->createGeometryRubberBand( type, true );
mTempRubberBand->show();
}
}
Expand All @@ -74,9 +75,9 @@ bool QgsMapToolShapeEllipseCenterPoint::cadCanvasReleaseEvent( QgsMapMouseEvent
return false;
}

void QgsMapToolShapeEllipseCenterPoint::cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer )
void QgsMapToolShapeEllipseCenterPoint::cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode )
{
Q_UNUSED( layer )
Q_UNUSED( mode )

const QgsPoint point = mParentTool->mapPoint( *e );

Expand Down
4 changes: 2 additions & 2 deletions src/app/maptools/qgsmaptoolshapeellipsecenterpoint.h
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,8 @@ class APP_EXPORT QgsMapToolShapeEllipseCenterPoint: public QgsMapToolShapeEllips
public:
QgsMapToolShapeEllipseCenterPoint( QgsMapToolCapture *parentTool ) : QgsMapToolShapeEllipseAbstract( QgsMapToolShapeEllipseCenterPointMetadata::TOOL_ID, parentTool ) {}

bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, const QgsVectorLayer *layer ) override;
bool cadCanvasReleaseEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
void cadCanvasMoveEvent( QgsMapMouseEvent *e, QgsMapToolCapture::CaptureMode mode ) override;
};

#endif // QGSMAPTOOLSHAPEELLIPSECENTERPOINT_H

0 comments on commit 8f74823

Please sign in to comment.