Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDominique Louis <dolouis@microsoft.com>2019-12-17 14:22:19 +0300
committerGitHub <noreply@github.com>2019-12-17 14:22:19 +0300
commit83b726e03432efa3f9206ced9a528bddbe2d78db (patch)
treeba6a213f94d235515914bfc672a0a522b4e8ce73 /Xamarin.PropertyEditing.Mac
parente619ba48a465211c7911398e40daf813a5887950 (diff)
parentf93638314a6449b9672a3a52fa638cc48f6a6792 (diff)
Merge pull request #685 from xamarin/dominique-Fix684
[Mac] Make the button that popped up the PopOver have focus, once theā€¦
Diffstat (limited to 'Xamarin.PropertyEditing.Mac')
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/CollectionEditorWindow.cs63
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/ControlExtensions.cs3
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs1
3 files changed, 37 insertions, 30 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/CollectionEditorWindow.cs b/Xamarin.PropertyEditing.Mac/Controls/CollectionEditorWindow.cs
index 6b42de2..c215e1e 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/CollectionEditorWindow.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/CollectionEditorWindow.cs
@@ -1,10 +1,7 @@
using System;
-using System.Collections.Generic;
-using System.Linq;
using AppKit;
using CoreGraphics;
-using Foundation;
using Xamarin.PropertyEditing.ViewModels;
@@ -16,7 +13,12 @@ namespace Xamarin.PropertyEditing.Mac
public CollectionEditorWindow (IHostResourceProvider hostResources, CollectionPropertyViewModel viewModel)
: base (new CGRect (0, 0, 500, 400), NSWindowStyle.Titled | NSWindowStyle.Closable | NSWindowStyle.Resizable, NSBackingStore.Buffered, true)
{
- Delegate = new ModalDialogDelegate ();
+ if (hostResources == null)
+ throw new ArgumentNullException (nameof (hostResources));
+ if (viewModel == null)
+ throw new ArgumentNullException (nameof (viewModel));
+
+ Delegate = new ModalWindowCloseDelegate ();
Title = String.Format (Properties.Resources.CollectionEditorTitle, viewModel.Property.Name);
this.collectionEditor = new CollectionEditorControl (hostResources) {
@@ -26,19 +28,28 @@ namespace Xamarin.PropertyEditing.Mac
ContentView.AddSubview (this.collectionEditor);
- this.ok = NSButton.CreateButton (Properties.Resources.OK, OnOked);
- this.ok.AccessibilityEnabled = true;
- this.ok.AccessibilityTitle = Properties.Resources.AccessibilityCollectionOKButton;
- this.ok.Highlighted = true;
- this.ok.TranslatesAutoresizingMaskIntoConstraints = false;
-
- //this.ok.KeyEquivalent = "\r"; // FIXME: The type selector popup doesn't eat this key, so it ends up closing both.
+ this.ok = new FocusableButton {
+ AccessibilityEnabled = true,
+ AccessibilityTitle = Properties.Resources.AccessibilityCollectionOKButton,
+ BezelStyle = NSBezelStyle.Rounded,
+ ControlSize = NSControlSize.Regular,
+ Highlighted = true,
+ //KeyEquivalent = "\r", // FIXME: The type selector popup doesn't eat this key, so it ends up closing both.Sw
+ Title = Properties.Resources.OK,
+ TranslatesAutoresizingMaskIntoConstraints = false
+ };
+ this.ok.Activated += OnOked;
ContentView.AddSubview (this.ok);
- this.cancel = NSButton.CreateButton (Properties.Resources.Cancel, OnCanceled);
- this.cancel.AccessibilityEnabled = true;
- this.cancel.AccessibilityTitle = Properties.Resources.AccessibilityCollectionCancelButton;
- this.cancel.TranslatesAutoresizingMaskIntoConstraints = false;
+ this.cancel = new FocusableButton {
+ AccessibilityEnabled = true,
+ AccessibilityTitle = Properties.Resources.AccessibilityCollectionCancelButton,
+ BezelStyle = NSBezelStyle.Rounded,
+ ControlSize = NSControlSize.Regular,
+ Title = Properties.Resources.Cancel,
+ TranslatesAutoresizingMaskIntoConstraints = false
+ };
+ this.cancel.Activated += OnCanceled;
ContentView.AddSubview (this.cancel);
ContentView.AddConstraints (new[] {
@@ -66,16 +77,20 @@ namespace Xamarin.PropertyEditing.Mac
private CollectionEditorControl collectionEditor;
private NSButton ok, cancel;
- private void OnOked ()
+ private void OnOked (object o, EventArgs e)
{
ModalResponse = NSModalResponse.OK;
- this.collectionEditor.ViewModel = null;
- Close ();
+ CloseWindow ();
}
- private void OnCanceled ()
+ private void OnCanceled (object o, EventArgs e)
{
ModalResponse = NSModalResponse.Cancel;
+ CloseWindow ();
+ }
+
+ private void CloseWindow ()
+ {
this.collectionEditor.ViewModel = null;
Close ();
}
@@ -94,15 +109,5 @@ namespace Xamarin.PropertyEditing.Mac
collectionVm.CommitCommand.Execute (null);
}
-
- private class ModalDialogDelegate
- : NSWindowDelegate
- {
- public override void WillClose (NSNotification notification)
- {
- NSModalResponse response = ((CollectionEditorWindow)notification.Object).ModalResponse;
- NSApplication.SharedApplication.StopModalWithCode ((int)response);
- }
- }
}
} \ No newline at end of file
diff --git a/Xamarin.PropertyEditing.Mac/Controls/ControlExtensions.cs b/Xamarin.PropertyEditing.Mac/Controls/ControlExtensions.cs
index 3e94781..cad49a8 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/ControlExtensions.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/ControlExtensions.cs
@@ -37,6 +37,9 @@ namespace Xamarin.PropertyEditing.Mac
popover.SetAppearance (hostResources.GetVibrantAppearance (source.EffectiveAppearance));
tcs.Task.ContinueWith (t => {
+ // Focus back to the button that popped us up
+ source.Superview?.Window?.MakeFirstResponder (source);
+
popover.PerformClose (popover);
popover.Dispose ();
}, TaskScheduler.FromCurrentSynchronizationContext ());
diff --git a/Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs
index 69a520e..9ee86d1 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs
@@ -112,7 +112,6 @@ namespace Xamarin.PropertyEditing.Mac
private void OnSelectPressed (object sender, EventArgs e)
{
- Window.MakeFirstResponder (this.selectType);
ViewModel.SelectTypeCommand.Execute (null);
}
}