From 98847f5d862ffa0d7da855edfa49616bc44d3dc9 Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Fri, 24 May 2024 21:27:04 +0200 Subject: [PATCH] Avalonia: ignore coercing default ZoomLevel value --- MapControl/Avalonia/MapBase.Avalonia.cs | 6 +++--- MapControl/Shared/MapBase.cs | 9 ++++++++- MapControl/WPF/MapBase.WPF.cs | 8 ++++---- MapControl/WinUI/MapBase.WinUI.cs | 8 ++++---- 4 files changed, 19 insertions(+), 12 deletions(-) diff --git a/MapControl/Avalonia/MapBase.Avalonia.cs b/MapControl/Avalonia/MapBase.Avalonia.cs index 0701ab72..8e8c622d 100644 --- a/MapControl/Avalonia/MapBase.Avalonia.cs +++ b/MapControl/Avalonia/MapBase.Avalonia.cs @@ -35,7 +35,7 @@ namespace MapControl true); public static readonly StyledProperty MinZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(MinZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(MinZoomLevel), DefaultZoomLevel, (map, oldValue, newValue) => map.MinZoomLevelPropertyChanged(newValue), (map, value) => map.CoerceMinZoomLevelProperty(value)); @@ -45,13 +45,13 @@ namespace MapControl (map, value) => map.CoerceMaxZoomLevelProperty(value)); public static readonly StyledProperty ZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(ZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(ZoomLevel), DefaultZoomLevel, (map, oldValue, newValue) => map.ZoomLevelPropertyChanged(newValue), (map, value) => map.CoerceZoomLevelProperty(value), true); public static readonly StyledProperty TargetZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(TargetZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(TargetZoomLevel), DefaultZoomLevel, async (map, oldValue, newValue) => await map.TargetZoomLevelPropertyChanged(newValue), (map, value) => map.CoerceZoomLevelProperty(value), true); diff --git a/MapControl/Shared/MapBase.cs b/MapControl/Shared/MapBase.cs index f2be3866..657fb11a 100644 --- a/MapControl/Shared/MapBase.cs +++ b/MapControl/Shared/MapBase.cs @@ -35,6 +35,8 @@ namespace MapControl /// public partial class MapBase : MapPanel { + private const double DefaultZoomLevel = 1d; + public static TimeSpan ImageFadeDuration { get; set; } = TimeSpan.FromSeconds(0.1); public static readonly DependencyProperty AnimationDurationProperty = @@ -418,7 +420,12 @@ namespace MapControl private double CoerceZoomLevelProperty(double zoomLevel) { - return Math.Min(Math.Max(zoomLevel, MinZoomLevel), MaxZoomLevel); + if (zoomLevel != DefaultZoomLevel) // Avalonia: ignore coercing default value + { + zoomLevel = Math.Min(Math.Max(zoomLevel, MinZoomLevel), MaxZoomLevel); + } + + return zoomLevel; } private double CoerceHeadingProperty(double heading) diff --git a/MapControl/WPF/MapBase.WPF.cs b/MapControl/WPF/MapBase.WPF.cs index f33c02e6..16e26e44 100644 --- a/MapControl/WPF/MapBase.WPF.cs +++ b/MapControl/WPF/MapBase.WPF.cs @@ -31,7 +31,7 @@ namespace MapControl true); public static readonly DependencyProperty MinZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(MinZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(MinZoomLevel), DefaultZoomLevel, (map, oldValue, newValue) => map.MinZoomLevelPropertyChanged(newValue), (map, value) => map.CoerceMinZoomLevelProperty(value)); @@ -41,13 +41,13 @@ namespace MapControl (map, value) => map.CoerceMaxZoomLevelProperty(value)); public static readonly DependencyProperty ZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(ZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(ZoomLevel), DefaultZoomLevel, (map, oldValue, newValue) => map.ZoomLevelPropertyChanged(newValue), (map, value) => map.CoerceZoomLevelProperty(value), true); public static readonly DependencyProperty TargetZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(TargetZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(TargetZoomLevel), DefaultZoomLevel, (map, oldValue, newValue) => map.TargetZoomLevelPropertyChanged(newValue), (map, value) => map.CoerceZoomLevelProperty(value), true); @@ -65,7 +65,7 @@ namespace MapControl true); private static readonly DependencyPropertyKey ViewScalePropertyKey = - DependencyPropertyHelper.RegisterReadOnly(nameof(ViewScale), 0d); + DependencyPropertyHelper.RegisterReadOnly(nameof(ViewScale)); public static readonly DependencyProperty ViewScaleProperty = ViewScalePropertyKey.DependencyProperty; diff --git a/MapControl/WinUI/MapBase.WinUI.cs b/MapControl/WinUI/MapBase.WinUI.cs index a57b3bf8..40f063f7 100644 --- a/MapControl/WinUI/MapBase.WinUI.cs +++ b/MapControl/WinUI/MapBase.WinUI.cs @@ -35,7 +35,7 @@ namespace MapControl (map, oldValue, newValue) => map.TargetCenterPropertyChanged(newValue)); public static readonly DependencyProperty MinZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(MinZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(MinZoomLevel), DefaultZoomLevel, (map, oldValue, newValue) => map.MinZoomLevelPropertyChanged(newValue)); public static readonly DependencyProperty MaxZoomLevelProperty = @@ -43,11 +43,11 @@ namespace MapControl (map, oldValue, newValue) => map.MaxZoomLevelPropertyChanged(newValue)); public static readonly DependencyProperty ZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(ZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(ZoomLevel), DefaultZoomLevel, (map, oldValue, newValue) => map.ZoomLevelPropertyChanged(newValue)); public static readonly DependencyProperty TargetZoomLevelProperty = - DependencyPropertyHelper.Register(nameof(TargetZoomLevel), 1d, + DependencyPropertyHelper.Register(nameof(TargetZoomLevel), DefaultZoomLevel, (map, oldValue, newValue) => map.TargetZoomLevelPropertyChanged(newValue)); public static readonly DependencyProperty HeadingProperty = @@ -59,7 +59,7 @@ namespace MapControl (map, oldValue, newValue) => map.TargetHeadingPropertyChanged(newValue)); public static readonly DependencyProperty ViewScaleProperty = - DependencyPropertyHelper.Register(nameof(ViewScale), 0d); + DependencyPropertyHelper.Register(nameof(ViewScale)); private static readonly DependencyProperty AnimatedCenterProperty = DependencyPropertyHelper.Register(nameof(AnimatedCenter),