From a2e92bf834987d6e428c53cf8db31a93c04a3151 Mon Sep 17 00:00:00 2001 From: Bret Johnson Date: Thu, 17 Mar 2022 00:23:25 -0400 Subject: Use PreviewKeyDown for Ctrl+Space to show menu Ctrl+Space is the keyboard short that can be used to show the property editor menu for a property (with options like Reset, Convert to Local Value, etc.). Previously, that was detected via a KeyBinding in XAML, which worked for text boxes but not controls like checkbox and button, which handle the key down event themselves. Now we use PreviewKeyDown instead, handling that in C# code, to work for all control types. Fixes AB#1491229 --- Xamarin.PropertyEditing.Windows/PropertyPresenter.cs | 18 ++++++++++++++++++ Xamarin.PropertyEditing.Windows/Themes/Resources.xaml | 5 +---- 2 files changed, 19 insertions(+), 4 deletions(-) mode change 100755 => 100644 Xamarin.PropertyEditing.Windows/PropertyPresenter.cs diff --git a/Xamarin.PropertyEditing.Windows/PropertyPresenter.cs b/Xamarin.PropertyEditing.Windows/PropertyPresenter.cs old mode 100755 new mode 100644 index 4cf1813..af7dbbc --- a/Xamarin.PropertyEditing.Windows/PropertyPresenter.cs +++ b/Xamarin.PropertyEditing.Windows/PropertyPresenter.cs @@ -6,6 +6,7 @@ using System.Windows.Automation; using System.Windows.Automation.Peers; using System.Windows.Controls; using System.Windows.Controls.Primitives; +using System.Windows.Input; using System.Windows.Media; using Xamarin.PropertyEditing.ViewModels; @@ -112,6 +113,11 @@ namespace Xamarin.PropertyEditing.Windows this.variationRow = (RowDefinition) GetTemplateChild ("variationRow"); this.variationsList = GetTemplateChild ("variationsList") as ItemsControl; + + this.propertyButton = (PropertyButton) GetTemplateChild ("propertyButton"); + + this.propertyContainer = (Border) GetTemplateChild ("propertyContainer"); + this.propertyContainer.AddHandler (Border.PreviewKeyDownEvent, new KeyEventHandler (PropertyContainer_PreviewKeyDown)); } protected override AutomationPeer OnCreateAutomationPeer () @@ -155,10 +161,22 @@ namespace Xamarin.PropertyEditing.Windows } } + private void PropertyContainer_PreviewKeyDown (object sender, KeyEventArgs e) + { + var isModifierControl = Keyboard.Modifiers == ModifierKeys.Control; + + if (e.Key == Key.Space && isModifierControl) { + propertyButton.ShowMenu (); + e.Handled = true; + } + } + private PropertyViewModel pvm; private ButtonBase addButton, removeButton; private RowDefinition variationRow; private ItemsControl variationsList; + private Border propertyContainer; + private PropertyButton propertyButton; private void OnLoaded (object sender, RoutedEventArgs e) { diff --git a/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml b/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml index 2b0938e..cafc4c0 100644 --- a/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml +++ b/Xamarin.PropertyEditing.Windows/Themes/Resources.xaml @@ -1708,10 +1708,7 @@ - - - - + -- cgit v1.2.3