diff --git a/MapControl/Avalonia/MapItem.Avalonia.cs b/MapControl/Avalonia/MapItem.Avalonia.cs index 882ea033..2d3bf403 100644 --- a/MapControl/Avalonia/MapItem.Avalonia.cs +++ b/MapControl/Avalonia/MapItem.Avalonia.cs @@ -15,8 +15,8 @@ namespace MapControl protected override void OnPointerPressed(PointerPressedEventArgs e) { - (ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)?.OnItemClicked( - this, e.KeyModifiers.HasFlag(KeyModifiers.Control), e.KeyModifiers.HasFlag(KeyModifiers.Shift)); + (ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)? + .OnItemClicked(this, e.KeyModifiers.HasFlag(KeyModifiers.Control)); e.Handled = true; } diff --git a/MapControl/Shared/MapItemsControl.cs b/MapControl/Shared/MapItemsControl.cs index 32c44064..5c350984 100644 --- a/MapControl/Shared/MapItemsControl.cs +++ b/MapControl/Shared/MapItemsControl.cs @@ -82,14 +82,12 @@ namespace MapControl SelectItemsByPosition(p => rect.Contains(p)); } - protected internal void OnItemClicked(MapItem mapItem, bool controlKey, bool shiftKey) + protected internal void OnItemClicked(MapItem mapItem, bool controlKey) { var item = ItemFromContainer(mapItem); - if (SelectionMode == SelectionMode.Single) + if (SelectionMode == SelectionMode.Single) // set SelectedItem { - // Single -> set only SelectedItem. - if (SelectedItem != item) { SelectedItem = item; @@ -99,10 +97,8 @@ namespace MapControl SelectedItem = null; } } - else if (SelectionMode == SelectionMode.Multiple || controlKey) + else if (controlKey) // toggle item in SelectedItems { - // Multiple or Extended with Ctrl -> toggle item in SelectedItems. - if (SelectedItems.Contains(item)) { SelectedItems.Remove(item); @@ -112,23 +108,10 @@ namespace MapControl SelectedItems.Add(item); } } - else if (shiftKey && SelectedItem != null) + else // set single item in SelectedItems { - // Extended with Shift -> select items in view rectangle. - - var p1 = MapPanel.GetViewPosition(ContainerFromItem(SelectedItem)); - var p2 = MapPanel.GetViewPosition(mapItem); - - if (p1.HasValue && p2.HasValue) - { - SelectItemsInRect(new Rect(p1.Value, p2.Value)); - } - } - else if (SelectedItem != item) - { - // Extended without Control or Shift -> set selected item. - - SelectedItem = item; + SelectedItems.Clear(); + SelectedItems.Add(item); } } } diff --git a/MapControl/WPF/MapItem.WPF.cs b/MapControl/WPF/MapItem.WPF.cs index 1a15a8c9..120e3026 100644 --- a/MapControl/WPF/MapItem.WPF.cs +++ b/MapControl/WPF/MapItem.WPF.cs @@ -24,8 +24,8 @@ namespace MapControl protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { - (ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)?.OnItemClicked( - this, Keyboard.Modifiers.HasFlag(ModifierKeys.Control), Keyboard.Modifiers.HasFlag(ModifierKeys.Shift)); + (ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)? + .OnItemClicked(this, Keyboard.Modifiers.HasFlag(ModifierKeys.Control)); e.Handled = true; } diff --git a/MapControl/WinUI/MapItem.WinUI.cs b/MapControl/WinUI/MapItem.WinUI.cs index 8a07c43a..fd57f12c 100644 --- a/MapControl/WinUI/MapItem.WinUI.cs +++ b/MapControl/WinUI/MapItem.WinUI.cs @@ -39,8 +39,8 @@ namespace MapControl protected override void OnPointerPressed(PointerRoutedEventArgs e) { - (ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)?.OnItemClicked( - this, e.KeyModifiers.HasFlag(VirtualKeyModifiers.Control), e.KeyModifiers.HasFlag(VirtualKeyModifiers.Shift)); + (ItemsControl.ItemsControlFromItemContainer(this) as MapItemsControl)? + .OnItemClicked(this, e.KeyModifiers.HasFlag(VirtualKeyModifiers.Control)); e.Handled = true; } diff --git a/SampleApps/AvaloniaApp/MainWindow.axaml b/SampleApps/AvaloniaApp/MainWindow.axaml index 19977caf..92c1a423 100644 --- a/SampleApps/AvaloniaApp/MainWindow.axaml +++ b/SampleApps/AvaloniaApp/MainWindow.axaml @@ -16,7 +16,7 @@ ManipulationModes="All" DoubleTapped="OnMapDoubleTapped"> - +