From 349750a6f06125324e9828c03cb295cde7e78c35 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Sat, 30 May 2026 15:50:55 +0000 Subject: [PATCH] Tint fixme markers light blue when object is a relation member Relation-bound fixmes use the same RGB as relation member highlighting in EditorMapLayer so mappers can distinguish them from actionable fixmes. Co-authored-by: Tobias --- src/Shared/MapMarkers/FixmeMarker.swift | 28 +++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/Shared/MapMarkers/FixmeMarker.swift b/src/Shared/MapMarkers/FixmeMarker.swift index 565e0a4a6..ac99f6791 100644 --- a/src/Shared/MapMarkers/FixmeMarker.swift +++ b/src/Shared/MapMarkers/FixmeMarker.swift @@ -7,9 +7,15 @@ // import Foundation +import UIKit // An OSM object containing a fixme= tag final class FixmeMarker: MapMarker { + /// Same light blue as relation member highlighting in EditorMapLayer. + private static let relationMemberColor = UIColor(red: 66 / 255.0, + green: 188 / 255.0, + blue: 244 / 255.0, + alpha: 1.0) let fixmeID: OsmExtendedIdentifier override var markerIdentifier: String { @@ -39,6 +45,28 @@ final class FixmeMarker: MapMarker { override var buttonLabel: String { "F" } + private var isRelationMember: Bool { + guard let object = object else { return false } + return !object.parentRelations.isEmpty + } + + override func makeButton() -> UIButton { + let button = super.makeButton() + applyButtonStyle() + return button + } + + override func reuseButtonFrom(_ other: MapMarker) { + super.reuseButtonFrom(other) + applyButtonStyle() + } + + private func applyButtonStyle() { + guard let button = button else { return } + let color = isRelationMember ? Self.relationMemberColor : .blue + button.layer.backgroundColor = color.cgColor + } + override func handleButtonPress(in mainView: MainViewController, markerView: MapMarkersView) { if mainView.mapView.isHidden { // show the fixme text