From 840f8fa0e6a6feae3684392ed8e2d38e89188200 Mon Sep 17 00:00:00 2001 From: Richard Kello Date: Thu, 2 Jul 2026 09:49:02 +0200 Subject: [PATCH 1/3] Fix white map sketch bug, fix eraser not turning off previously selected color --- app/mapsketchingcontroller.cpp | 10 +++++++++- app/qml/components/MMColorButton.qml | 2 -- app/qml/components/MMColorPicker.qml | 14 ++++---------- app/qml/map/MMMapSketchesDrawer.qml | 8 +++++--- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/app/mapsketchingcontroller.cpp b/app/mapsketchingcontroller.cpp index af5cf5010..8801eb976 100644 --- a/app/mapsketchingcontroller.cpp +++ b/app/mapsketchingcontroller.cpp @@ -147,7 +147,13 @@ QgsGeometry MapSketchingController::highlightGeometry() const QStringList MapSketchingController::availableColors() const { const QStringList defaultColors = { "#FFFFFF", "#12181F", "#5E9EE4", "#57B46F", "#FDCB2A", "#FF9C40", "#FF8F93" }; - return mMapSettings->project()->readListEntry( QStringLiteral( "Mergin" ), QStringLiteral( "MapSketching/Colors" ), defaultColors ); + +if ( mMapSettings && mMapSettings->project() ) + { + return mMapSettings->project()->readListEntry( QStringLiteral( "Mergin" ), QStringLiteral( "MapSketching/Colors" ), defaultColors ); + } + + return defaultColors; } void MapSketchingController::clearHighlight() @@ -187,6 +193,8 @@ void MapSketchingController::setMapSettings( InputMapSettings *settings ) mMapSettings = settings; emit mapSettingsChanged(); + + setActiveColor( availableColors().first() ); } InputMapSettings *MapSketchingController::mapSettings() const diff --git a/app/qml/components/MMColorButton.qml b/app/qml/components/MMColorButton.qml index fb4ce9bab..00fee304a 100644 --- a/app/qml/components/MMColorButton.qml +++ b/app/qml/components/MMColorButton.qml @@ -20,8 +20,6 @@ RoundButton { implicitWidth: __style.margin48 implicitHeight: __style.margin48 - anchors.verticalCenter: parent.verticalCenter - contentItem: Rectangle { color: root.buttonColor radius: width / 2 diff --git a/app/qml/components/MMColorPicker.qml b/app/qml/components/MMColorPicker.qml index 5effda495..794a56df5 100644 --- a/app/qml/components/MMColorPicker.qml +++ b/app/qml/components/MMColorPicker.qml @@ -18,6 +18,8 @@ ScrollView { property color activeColor + signal activeColorChangeRequested( color newColor ) + height: scrollRow.height ScrollBar.vertical.policy: ScrollBar.AlwaysOff ScrollBar.horizontal.policy: ScrollBar.AlwaysOff @@ -29,6 +31,7 @@ ScrollView { Repeater { model: root.colors + MMColorButton{ required property color modelData required property int index @@ -36,16 +39,7 @@ ScrollView { buttonColor: modelData isSelected: root.activeColor === modelData - onClicked: { - root.activeColor = modelData; - } - Component.onCompleted: { - // set the initial color to be the first one in the list - if ( index === 0 ) - { - root.activeColor = modelData - } - } + onClicked: root.activeColorChangeRequested( modelData ) } } } diff --git a/app/qml/map/MMMapSketchesDrawer.qml b/app/qml/map/MMMapSketchesDrawer.qml index 25aa4ae4d..2000e7db7 100644 --- a/app/qml/map/MMMapSketchesDrawer.qml +++ b/app/qml/map/MMMapSketchesDrawer.qml @@ -79,15 +79,17 @@ MMComponents.MMDrawer { MMComponents.MMColorPicker { id: colorPicker - colors: root.sketchingController?.availableColors() ?? __style.photoSketchingWhiteColor + + colors: root.sketchingController?.availableColors() ?? null + activeColor: root.sketchingController?.activeColor ?? null Layout.alignment: Qt.AlignHCenter Layout.maximumWidth: parent.width - onActiveColorChanged: { + onActiveColorChangeRequested: { if ( root.sketchingController ) { - root.sketchingController.activeColor = colorPicker.activeColor + root.sketchingController.activeColor = newColor root.sketchingController.eraserActive = false } } From 00be432c40e2d8bb44da7d00bb60a860cb27fd59 Mon Sep 17 00:00:00 2001 From: Richard Kello Date: Thu, 2 Jul 2026 10:41:54 +0200 Subject: [PATCH 2/3] Fix some cpp formating --- app/mapsketchingcontroller.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/mapsketchingcontroller.cpp b/app/mapsketchingcontroller.cpp index 8801eb976..d4cb4ef82 100644 --- a/app/mapsketchingcontroller.cpp +++ b/app/mapsketchingcontroller.cpp @@ -148,12 +148,12 @@ QStringList MapSketchingController::availableColors() const { const QStringList defaultColors = { "#FFFFFF", "#12181F", "#5E9EE4", "#57B46F", "#FDCB2A", "#FF9C40", "#FF8F93" }; -if ( mMapSettings && mMapSettings->project() ) - { - return mMapSettings->project()->readListEntry( QStringLiteral( "Mergin" ), QStringLiteral( "MapSketching/Colors" ), defaultColors ); - } + if ( mMapSettings && mMapSettings->project() ) + { + return mMapSettings->project()->readListEntry( QStringLiteral( "Mergin" ), QStringLiteral( "MapSketching/Colors" ), defaultColors ); + } - return defaultColors; + return defaultColors; } void MapSketchingController::clearHighlight() From 0c5ca45558f420589c18e95be56f97fcbf0c7052 Mon Sep 17 00:00:00 2001 From: Richard Kello Date: Thu, 2 Jul 2026 11:00:23 +0200 Subject: [PATCH 3/3] Remove redundant code parts --- app/qml/map/MMMapSketchesDrawer.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/qml/map/MMMapSketchesDrawer.qml b/app/qml/map/MMMapSketchesDrawer.qml index 2000e7db7..4f41856a8 100644 --- a/app/qml/map/MMMapSketchesDrawer.qml +++ b/app/qml/map/MMMapSketchesDrawer.qml @@ -80,8 +80,8 @@ MMComponents.MMDrawer { MMComponents.MMColorPicker { id: colorPicker - colors: root.sketchingController?.availableColors() ?? null - activeColor: root.sketchingController?.activeColor ?? null + colors: root.sketchingController?.availableColors() + activeColor: root.sketchingController?.activeColor Layout.alignment: Qt.AlignHCenter Layout.maximumWidth: parent.width