From 685431d4e437105ec3cda7d6bed6f90dc3443864 Mon Sep 17 00:00:00 2001 From: alex-osm Date: Tue, 14 May 2024 18:35:47 +0300 Subject: [PATCH] Fix #3702 --- .../OAMoreOptionsBottomSheetViewController.mm | 3 ++- Sources/Controllers/Map/Layers/OAGPXLayer.mm | 7 ++++++- Sources/Controllers/Map/Layers/OAGPXRecLayer.mm | 9 +++++---- .../GPX/TrackMenu/OATrackMenuHudViewController.mm | 1 + Sources/Models/OAGpxWptItem.h | 1 + 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Sources/Controllers/BottomSheet/MoreOptionsBottomSheet/OAMoreOptionsBottomSheetViewController.mm b/Sources/Controllers/BottomSheet/MoreOptionsBottomSheet/OAMoreOptionsBottomSheetViewController.mm index cf0179b860..ae8ebac431 100644 --- a/Sources/Controllers/BottomSheet/MoreOptionsBottomSheet/OAMoreOptionsBottomSheetViewController.mm +++ b/Sources/Controllers/BottomSheet/MoreOptionsBottomSheet/OAMoreOptionsBottomSheetViewController.mm @@ -131,7 +131,8 @@ - (void) setupView { if ([addon.addonId isEqualToString:kId_Addon_TrackRecording_Edit_Waypoint] && _iapHelper.trackRecording.isActive - && (_targetPoint.type == OATargetWpt) && [_targetPoint.targetObj isKindOfClass:[OAGpxWptItem class]]) { + && (_targetPoint.type == OATargetWpt) && [_targetPoint.targetObj isKindOfClass:[OAGpxWptItem class]] && !((OAGpxWptItem *)_targetPoint.targetObj).routePoint) + { [arr addObject:@{ @"title" : addon.titleShort, @"key" : @"addon_edit_waypoint", @"img" : addon.imageName, diff --git a/Sources/Controllers/Map/Layers/OAGPXLayer.mm b/Sources/Controllers/Map/Layers/OAGPXLayer.mm index a43ca58791..f013a4b516 100644 --- a/Sources/Controllers/Map/Layers/OAGPXLayer.mm +++ b/Sources/Controllers/Map/Layers/OAGPXLayer.mm @@ -1298,7 +1298,12 @@ - (void) collectObjectsFromPoint:(CLLocationCoordinate2D)point touchPoint:(CGPoi - (BOOL) isObjectMovable:(id)object { - return [object isKindOfClass:OAGpxWptItem.class]; + if ([object isKindOfClass:OAGpxWptItem.class]) + { + OAGpxWptItem *item = (OAGpxWptItem *)object; + return !item.routePoint; + } + return NO; } - (void) applyNewObjectPosition:(id)object position:(CLLocationCoordinate2D)position diff --git a/Sources/Controllers/Map/Layers/OAGPXRecLayer.mm b/Sources/Controllers/Map/Layers/OAGPXRecLayer.mm index 8397798bba..c47acdac43 100644 --- a/Sources/Controllers/Map/Layers/OAGPXRecLayer.mm +++ b/Sources/Controllers/Map/Layers/OAGPXRecLayer.mm @@ -44,11 +44,12 @@ - (void) collectObjectsFromPoint:(CLLocationCoordinate2D)point touchPoint:(CGPoi - (BOOL)isObjectMovable:(id)object { - BOOL movable = NO; if ([object isKindOfClass:OAGpxWptItem.class]) - movable = ((OAGpxWptItem *)object).docPath == nil; - - return movable; + { + OAGpxWptItem *item = (OAGpxWptItem *)object; + return item.docPath == nil && !item.routePoint; + } + return NO; } @end diff --git a/Sources/Controllers/TargetMenu/GPX/TrackMenu/OATrackMenuHudViewController.mm b/Sources/Controllers/TargetMenu/GPX/TrackMenu/OATrackMenuHudViewController.mm index f6a2875b3a..0f49c4251d 100644 --- a/Sources/Controllers/TargetMenu/GPX/TrackMenu/OATrackMenuHudViewController.mm +++ b/Sources/Controllers/TargetMenu/GPX/TrackMenu/OATrackMenuHudViewController.mm @@ -694,6 +694,7 @@ - (void)updateWaypointsData for (OAWptPt *rtePt in [self.doc getRoutePoints]) { OAGpxWptItem *rtePtItem = [OAGpxWptItem withGpxWpt:rtePt]; + rtePtItem.routePoint = YES; NSMutableArray *rtePtsGroup = _waypointGroups[OALocalizedString(@"route_points")]; if (!rtePtsGroup) { diff --git a/Sources/Models/OAGpxWptItem.h b/Sources/Models/OAGpxWptItem.h index ab71e2936a..bc91fd1d17 100644 --- a/Sources/Models/OAGpxWptItem.h +++ b/Sources/Models/OAGpxWptItem.h @@ -22,6 +22,7 @@ @property (nonatomic) NSString* distance; @property (nonatomic, assign) double distanceMeters; @property (nonatomic, assign) BOOL selected; +@property (nonatomic, assign) BOOL routePoint; @property (nonatomic) NSString *docPath;