diff --git a/app/mapsketchingcontroller.cpp b/app/mapsketchingcontroller.cpp index d4cb4ef82..288a1ef95 100644 --- a/app/mapsketchingcontroller.cpp +++ b/app/mapsketchingcontroller.cpp @@ -17,6 +17,7 @@ #include "qgsvectorlayerutils.h" #include "qgslinestring.h" #include "qgsmultilinestring.h" +#include "qgsvertexid.h" MapSketchingController::MapSketchingController( QObject *parent ) @@ -49,10 +50,13 @@ void MapSketchingController::updateHighlight( const QPointF &oldPoint, const QPo mScreenPoints = QgsGeometry( new QgsLineString( { QgsPointXY( oldPoint.x(), oldPoint.y() ) } ) ); } - // TODO: append instead of insert to zero - mScreenPoints.insertVertex( newPoint.x(), newPoint.y(), 0 ); + // Append point to the geometry + const QgsVertexId lastScreenVertex( 0, 0, mScreenPoints.constGet()->vertexCount() ); + mScreenPoints.get()->insertVertex( lastScreenVertex, QgsPoint( newPoint.x(), newPoint.y() ) ); + const QgsPoint p1 = mMapSettings->screenToCoordinate( newPoint ); - mHighlight.insertVertex( p1, 0 ); + const QgsVertexId lastHighlightVertex( 0, 0, mHighlight.constGet()->vertexCount() ); + mHighlight.get()->insertVertex( lastHighlightVertex, p1 ); emit highlightGeometryChanged(); } diff --git a/app/qml/map/MMMapSketchesDrawer.qml b/app/qml/map/MMMapSketchesDrawer.qml index 4f41856a8..e265cc3ef 100644 --- a/app/qml/map/MMMapSketchesDrawer.qml +++ b/app/qml/map/MMMapSketchesDrawer.qml @@ -80,13 +80,13 @@ MMComponents.MMDrawer { MMComponents.MMColorPicker { id: colorPicker - colors: root.sketchingController?.availableColors() - activeColor: root.sketchingController?.activeColor + colors: root.sketchingController?.availableColors() ?? [] + activeColor: root.sketchingController?.activeColor ?? null Layout.alignment: Qt.AlignHCenter Layout.maximumWidth: parent.width - onActiveColorChangeRequested: { + onActiveColorChangeRequested: function( newColor ) { if ( root.sketchingController ) { root.sketchingController.activeColor = newColor