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 <dominique@MININT-P5QM3VP.europe.corp.microsoft.com>2019-02-25 04:51:45 +0300
committerDominique Louis <dominique@BLADE51.redmond.corp.microsoft.com>2019-02-28 15:43:34 +0300
commit743e3fa1caad6948c17ca7407cbbfabce17acc63 (patch)
treeaa50b6d10f5ea8a791e3658f3416ff90c8a3d104 /Xamarin.PropertyEditing.Mac
parent93ef5b2bf8f74ce3a46305e48f59f9f43ab98710 (diff)
[Mac] When tabbing scroll focused control into view.
Diffstat (limited to 'Xamarin.PropertyEditing.Mac')
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/BooleanEditorControl.cs9
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs14
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/CombinablePropertyEditor.cs15
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableBooleanButton.cs33
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableButton.cs31
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableComboBox.cs13
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/FocusablePopupButton.cs20
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/PropertyTextField.cs9
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/NumericEditorControl.cs2
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/ObjectEditorControl.cs3
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/PredefinedValuesEditor.cs2
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/StringEditorControl.cs9
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs3
-rw-r--r--Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj3
14 files changed, 122 insertions, 44 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/BooleanEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/BooleanEditorControl.cs
index 2065ba5..16c29b0 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/BooleanEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/BooleanEditorControl.cs
@@ -14,14 +14,7 @@ namespace Xamarin.PropertyEditing.Mac
public BooleanEditorControl (IHostResourceProvider hostResource)
: base (hostResource)
{
- BooleanEditor = new NSButton {
- AllowsMixedState = true,
- ControlSize = NSControlSize.Small,
- Font = NSFont.FromFontName (DefaultFontName, DefaultFontSize),
- Title = string.Empty,
- TranslatesAutoresizingMaskIntoConstraints = false,
- };
- BooleanEditor.SetButtonType (NSButtonType.Switch);
+ BooleanEditor = new FocusableBooleanButton ();
// update the value on 'enter'
BooleanEditor.Activated += (sender, e) => {
diff --git a/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
index 7731bba..ae00c0c 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs
@@ -9,20 +9,8 @@ using Xamarin.PropertyEditing.ViewModels;
namespace Xamarin.PropertyEditing.Mac
{
- internal class ColorPopUpButton : NSPopUpButton
+ internal class ColorPopUpButton : FocusablePopUpButton
{
- public ColorPopUpButton () : base ()
- {
- }
-
- public ColorPopUpButton (CGRect frame) : base (frame, true)
- {
- }
-
- public ColorPopUpButton (IntPtr handle) : base (handle)
- {
- }
-
public NSPopover Popover { get; set; }
public override void MouseDown (NSEvent theEvent)
diff --git a/Xamarin.PropertyEditing.Mac/Controls/CombinablePropertyEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/CombinablePropertyEditor.cs
index 29fd55f..311be05 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/CombinablePropertyEditor.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/CombinablePropertyEditor.cs
@@ -77,19 +77,8 @@ namespace Xamarin.PropertyEditing.Mac
NSButton checkbox;
if (i >= this.combinableList.Count) {
- checkbox = new NSButton {
- AllowsExpansionToolTips = true,
- AllowsMixedState = true,
- Cell = {
- LineBreakMode = NSLineBreakMode.TruncatingTail,
- UsesSingleLineMode = true,
- },
- ControlSize = NSControlSize.Small,
- Font = NSFont.FromFontName (DefaultFontName, DefaultFontSize),
- TranslatesAutoresizingMaskIntoConstraints = false,
- };
-
- checkbox.SetButtonType (NSButtonType.Switch);
+ checkbox = new FocusableBooleanButton ();
+
checkbox.Activated += SelectionChanged;
AddSubview (checkbox);
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableBooleanButton.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableBooleanButton.cs
new file mode 100644
index 0000000..219fb95
--- /dev/null
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableBooleanButton.cs
@@ -0,0 +1,33 @@
+using System;
+using AppKit;
+
+namespace Xamarin.PropertyEditing.Mac
+{
+ internal class FocusableBooleanButton : NSButton
+ {
+ public override bool CanBecomeKeyView { get { return Enabled; } }
+
+ public FocusableBooleanButton ()
+ {
+ AllowsExpansionToolTips = true;
+ AllowsMixedState = true;
+ Cell.LineBreakMode = NSLineBreakMode.TruncatingTail;
+ Cell.UsesSingleLineMode = true;
+ ControlSize = NSControlSize.Small;
+ Font = NSFont.FromFontName (PropertyEditorControl.DefaultFontName, PropertyEditorControl.DefaultFontSize);
+ Title = string.Empty;
+ TranslatesAutoresizingMaskIntoConstraints = false;
+
+ SetButtonType (NSButtonType.Switch);
+ }
+
+ public override bool BecomeFirstResponder ()
+ {
+ var willBecomeFirstResponder = base.BecomeFirstResponder ();
+ if (willBecomeFirstResponder) {
+ ScrollRectToVisible (Bounds);
+ }
+ return willBecomeFirstResponder;
+ }
+ }
+}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableButton.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableButton.cs
new file mode 100644
index 0000000..5dba23c
--- /dev/null
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableButton.cs
@@ -0,0 +1,31 @@
+using System;
+using AppKit;
+
+namespace Xamarin.PropertyEditing.Mac
+{
+ internal class FocusableButton : NSButton
+ {
+ public override bool CanBecomeKeyView { get { return Enabled; } }
+
+ public FocusableButton ()
+ {
+ AllowsExpansionToolTips = true;
+ AllowsMixedState = true;
+ Cell.LineBreakMode = NSLineBreakMode.TruncatingTail;
+ Cell.UsesSingleLineMode = true;
+ ControlSize = NSControlSize.Small;
+ Font = NSFont.FromFontName (PropertyEditorControl.DefaultFontName, PropertyEditorControl.DefaultFontSize);
+ Title = string.Empty;
+ TranslatesAutoresizingMaskIntoConstraints = false;
+ }
+
+ public override bool BecomeFirstResponder ()
+ {
+ var willBecomeFirstResponder = base.BecomeFirstResponder ();
+ if (willBecomeFirstResponder) {
+ ScrollRectToVisible (Bounds);
+ }
+ return willBecomeFirstResponder;
+ }
+ }
+}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableComboBox.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableComboBox.cs
index 401c2ce..577ce4b 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableComboBox.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusableComboBox.cs
@@ -1,10 +1,19 @@
-using Foundation;
+using Foundation;
using AppKit;
namespace Xamarin.PropertyEditing.Mac
{
- class FocusableComboBox : NSComboBox
+ internal class FocusableComboBox : NSComboBox
{
+ public override bool BecomeFirstResponder ()
+ {
+ var willBecomeFirstResponder = base.BecomeFirstResponder ();
+ if (willBecomeFirstResponder) {
+ ScrollRectToVisible (Bounds);
+ }
+ return willBecomeFirstResponder;
+ }
+
public override bool ShouldBeginEditing (NSText textObject)
{
textObject.Delegate = new FocusableComboBoxDelegate ();
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusablePopupButton.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusablePopupButton.cs
new file mode 100644
index 0000000..4c9d392
--- /dev/null
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/FocusablePopupButton.cs
@@ -0,0 +1,20 @@
+using System;
+using AppKit;
+using CoreGraphics;
+
+namespace Xamarin.PropertyEditing.Mac
+{
+ internal class FocusablePopUpButton : NSPopUpButton
+ {
+ public override bool CanBecomeKeyView { get { return Enabled; } }
+
+ public override bool BecomeFirstResponder ()
+ {
+ var willBecomeFirstResponder = base.BecomeFirstResponder ();
+ if (willBecomeFirstResponder) {
+ ScrollRectToVisible (Bounds);
+ }
+ return willBecomeFirstResponder;
+ }
+ }
+}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/PropertyTextField.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/PropertyTextField.cs
index 2e7e158..0f28e2a 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/PropertyTextField.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/PropertyTextField.cs
@@ -11,5 +11,14 @@ namespace Xamarin.PropertyEditing.Mac
Cell.LineBreakMode = NSLineBreakMode.TruncatingTail;
Cell.UsesSingleLineMode = true;
}
+
+ public override bool BecomeFirstResponder ()
+ {
+ var willBecomeFirstResponder = base.BecomeFirstResponder ();
+ if (willBecomeFirstResponder) {
+ ScrollRectToVisible (Bounds);
+ }
+ return willBecomeFirstResponder;
+ }
}
}
diff --git a/Xamarin.PropertyEditing.Mac/Controls/NumericEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/NumericEditorControl.cs
index 55c4066..05b2463 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/NumericEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/NumericEditorControl.cs
@@ -140,7 +140,7 @@ namespace Xamarin.PropertyEditing.Mac
if (ViewModel.HasInputModes) {
if (this.inputModePopup == null) {
- this.inputModePopup = new NSPopUpButton {
+ this.inputModePopup = new FocusablePopUpButton {
Menu = new NSMenu (),
TranslatesAutoresizingMaskIntoConstraints = false,
};
diff --git a/Xamarin.PropertyEditing.Mac/Controls/ObjectEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/ObjectEditorControl.cs
index 9e71316..275bde6 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/ObjectEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/ObjectEditorControl.cs
@@ -19,9 +19,8 @@ namespace Xamarin.PropertyEditing.Mac
};
AddSubview (this.typeLabel);
- this.createObject = new NSButton {
+ this.createObject = new FocusableButton {
Title = Properties.Resources.New,
- TranslatesAutoresizingMaskIntoConstraints = false,
BezelStyle = NSBezelStyle.Rounded
};
this.createObject.Activated += OnNewPressed;
diff --git a/Xamarin.PropertyEditing.Mac/Controls/PredefinedValuesEditor.cs b/Xamarin.PropertyEditing.Mac/Controls/PredefinedValuesEditor.cs
index c41d01a..6da0661 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/PredefinedValuesEditor.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/PredefinedValuesEditor.cs
@@ -37,7 +37,7 @@ namespace Xamarin.PropertyEditing.Mac
ViewModel.ValueName = this.comboBox.SelectedValue.ToString ();
};
- this.popUpButton = new NSPopUpButton {
+ this.popUpButton = new FocusablePopUpButton {
AllowsExpansionToolTips = true,
Cell = {
LineBreakMode = NSLineBreakMode.TruncatingTail,
diff --git a/Xamarin.PropertyEditing.Mac/Controls/StringEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/StringEditorControl.cs
index b3b2efe..fa7badb 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/StringEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/StringEditorControl.cs
@@ -19,7 +19,8 @@ namespace Xamarin.PropertyEditing.Mac
private NSLayoutConstraint stringEditorWidthConstraint;
public override NSView FirstKeyView => this.stringEditor;
- public override NSView LastKeyView => this.stringEditor;
+ private NSView lastKeyView;
+ public override NSView LastKeyView => this.lastKeyView;
internal NSPopUpButton inputModePopup;
private IReadOnlyList<InputMode> viewModelInputModes;
@@ -41,6 +42,8 @@ namespace Xamarin.PropertyEditing.Mac
};
AddSubview (this.stringEditor);
+ this.lastKeyView = this.stringEditor;
+
this.stringEditorWidthConstraint = NSLayoutConstraint.Create (this.stringEditor, NSLayoutAttribute.Width, NSLayoutRelation.Equal, this, NSLayoutAttribute.Width, 1f, -117f);
this.AddConstraints (new[] {
@@ -72,7 +75,7 @@ namespace Xamarin.PropertyEditing.Mac
if (ViewModel.HasInputModes) {
if (this.inputModePopup == null) {
- this.inputModePopup = new NSPopUpButton {
+ this.inputModePopup = new FocusablePopUpButton {
Menu = new NSMenu (),
TranslatesAutoresizingMaskIntoConstraints = false,
};
@@ -90,6 +93,8 @@ namespace Xamarin.PropertyEditing.Mac
NSLayoutConstraint.Create (this.inputModePopup, NSLayoutAttribute.Width, NSLayoutRelation.Equal, 1f, 80f),
NSLayoutConstraint.Create (this.inputModePopup, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight - 3 ),
});
+
+ this.lastKeyView = this.inputModePopup;
}
this.inputModePopup.Menu.RemoveAllItems ();
diff --git a/Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs b/Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs
index a7ca19e..082faf2 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/TypeEditorControl.cs
@@ -19,9 +19,8 @@ namespace Xamarin.PropertyEditing.Mac
};
AddSubview (this.typeLabel);
- this.selectType = new NSButton {
+ this.selectType = new FocusableButton {
Title = Properties.Resources.Select,
- TranslatesAutoresizingMaskIntoConstraints = false,
BezelStyle = NSBezelStyle.Rounded
};
this.selectType.Activated += OnSelectPressed;
diff --git a/Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj b/Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj
index ec68293..35ff6d7 100644
--- a/Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj
+++ b/Xamarin.PropertyEditing.Mac/Xamarin.PropertyEditing.Mac.csproj
@@ -151,6 +151,9 @@
<Compile Include="Controls\Custom\PropertyTextField.cs" />
<Compile Include="Controls\ControlExtensions.cs" />
<Compile Include="Controls\TypeEditorControl.cs" />
+ <Compile Include="Controls\Custom\FocusablePopupButton.cs" />
+ <Compile Include="Controls\Custom\FocusableBooleanButton.cs" />
+ <Compile Include="Controls\Custom\FocusableButton.cs" />
</ItemGroup>
<ItemGroup>
<Folder Include="Controls\" />