Skip to content
This repository was archived by the owner on Sep 25, 2024. It is now read-only.

Commit f2f3549

Browse files
authored
Merge pull request #546 from xamarin/ermau-mac-theming-issues
Overhaul Mac layout
2 parents 1976b12 + 5d2c8e1 commit f2f3549

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+390
-581
lines changed

Xamarin.PropertyEditing.Mac/Controls/BaseEditorControl.cs

Lines changed: 0 additions & 104 deletions
This file was deleted.

Xamarin.PropertyEditing.Mac/Controls/BasePointEditorControl.cs

Lines changed: 8 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,23 @@ protected BasePointEditorControl (IHostResourceProvider hostResources)
4747
AddSubview (YLabel);
4848
AddSubview (YEditor);
4949

50+
const float editorHeight = 18;
5051
this.AddConstraints (new[] {
51-
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 0f),
52+
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 3f),
5253
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1f, 0f),
5354
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, YEditor, NSLayoutAttribute.Left, 1f, -10f),
54-
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
55+
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, editorHeight),
5556

5657
NSLayoutConstraint.Create (XLabel, NSLayoutAttribute.Top, NSLayoutRelation.Equal, XEditor, NSLayoutAttribute.Bottom, 1f, -4f),
57-
NSLayoutConstraint.Create (XLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
58+
NSLayoutConstraint.Create (XLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, editorHeight),
5859

59-
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 0f),
60-
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, this, NSLayoutAttribute.Right, 1f, -32f),
60+
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 3f),
61+
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, this, NSLayoutAttribute.Right, 1f, 0),
6162
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Width, NSLayoutRelation.Equal, XEditor, NSLayoutAttribute.Width, 1f, 0f),
62-
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
63+
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, editorHeight),
6364

6465
NSLayoutConstraint.Create (YLabel, NSLayoutAttribute.Top, NSLayoutRelation.Equal, XLabel, NSLayoutAttribute.Top, 1f, 0f),
65-
NSLayoutConstraint.Create (YLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
66+
NSLayoutConstraint.Create (YLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, editorHeight),
6667

6768
NSLayoutConstraint.Create (XLabel, NSLayoutAttribute.CenterX, NSLayoutRelation.Equal, XEditor.Subviews[0], NSLayoutAttribute.CenterX, 1f, 0),
6869
NSLayoutConstraint.Create (YLabel, NSLayoutAttribute.CenterX, NSLayoutRelation.Equal, YEditor.Subviews[0], NSLayoutAttribute.CenterX, 1f, 0),
@@ -77,21 +78,6 @@ public override void ViewDidChangeEffectiveAppearance ()
7778
YLabel.TextColor = HostResources.GetNamedColor (NamedResources.DescriptionLabelColor);
7879
}
7980

80-
protected override void HandleErrorsChanged (object sender, System.ComponentModel.DataErrorsChangedEventArgs e)
81-
{
82-
UpdateErrorsDisplayed (ViewModel.GetErrors (ViewModel.Property.Name));
83-
}
84-
85-
protected override void UpdateErrorsDisplayed (IEnumerable errors)
86-
{
87-
if (ViewModel.HasErrors) {
88-
SetErrors (errors);
89-
} else {
90-
SetErrors (null);
91-
SetEnabled ();
92-
}
93-
}
94-
9581
protected override void SetEnabled ()
9682
{
9783
XEditor.Enabled = ViewModel.Property.CanWrite;

Xamarin.PropertyEditing.Mac/Controls/BaseRectangleEditorControl.cs

Lines changed: 12 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -76,37 +76,37 @@ protected BaseRectangleEditorControl (IHostResourceProvider hostResources)
7676
AddSubview (HeightEditor);
7777

7878
this.AddConstraints (new[] {
79-
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 0f),
79+
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 3f),
8080
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1f, 0f),
8181
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, YEditor, NSLayoutAttribute.Left, 1f, -10f),
82-
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
82+
NSLayoutConstraint.Create (XEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 18),
8383

8484
NSLayoutConstraint.Create (XLabel, NSLayoutAttribute.Top, NSLayoutRelation.Equal, XEditor, NSLayoutAttribute.Bottom, 1f, -4f),
85-
NSLayoutConstraint.Create (XLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
85+
NSLayoutConstraint.Create (XLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 18),
8686

87-
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 0f),
88-
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, this, NSLayoutAttribute.Right, 1f, -32f),
87+
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 3f),
88+
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, this, NSLayoutAttribute.Right, 1f, 0),
8989
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Width, NSLayoutRelation.Equal, XEditor, NSLayoutAttribute.Width, 1f, 0f),
90-
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
90+
NSLayoutConstraint.Create (YEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 18),
9191

9292
NSLayoutConstraint.Create (YLabel, NSLayoutAttribute.Top, NSLayoutRelation.Equal, XLabel, NSLayoutAttribute.Top, 1f, 0f),
93-
NSLayoutConstraint.Create (YLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
93+
NSLayoutConstraint.Create (YLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 18),
9494

9595
NSLayoutConstraint.Create (WidthEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 33f),
9696
NSLayoutConstraint.Create (WidthEditor, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1f, 0f),
9797
NSLayoutConstraint.Create (WidthEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, HeightEditor, NSLayoutAttribute.Left, 1f, -10f),
98-
NSLayoutConstraint.Create (WidthEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
98+
NSLayoutConstraint.Create (WidthEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 18),
9999

100100
NSLayoutConstraint.Create (WidthLabel, NSLayoutAttribute.Top, NSLayoutRelation.Equal, WidthEditor, NSLayoutAttribute.Bottom, 1f, -4f),
101-
NSLayoutConstraint.Create (WidthLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
101+
NSLayoutConstraint.Create (WidthLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 18),
102102

103103
NSLayoutConstraint.Create (HeightEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, WidthEditor, NSLayoutAttribute.Top, 1f, 0f),
104-
NSLayoutConstraint.Create (HeightEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, this, NSLayoutAttribute.Right, 1f, -32f),
104+
NSLayoutConstraint.Create (HeightEditor, NSLayoutAttribute.Right, NSLayoutRelation.Equal, this, NSLayoutAttribute.Right, 1f, 0),
105105
NSLayoutConstraint.Create (HeightEditor, NSLayoutAttribute.Width, NSLayoutRelation.Equal, WidthEditor, NSLayoutAttribute.Width, 1f, 0f),
106-
NSLayoutConstraint.Create (HeightEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
106+
NSLayoutConstraint.Create (HeightEditor, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 18),
107107

108108
NSLayoutConstraint.Create (HeightLabel, NSLayoutAttribute.Top, NSLayoutRelation.Equal, WidthLabel, NSLayoutAttribute.Top, 1f, 0f),
109-
NSLayoutConstraint.Create (HeightLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
109+
NSLayoutConstraint.Create (HeightLabel, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 18),
110110

111111

112112
NSLayoutConstraint.Create (XLabel, NSLayoutAttribute.CenterX, NSLayoutRelation.Equal, XEditor.Subviews[0], NSLayoutAttribute.CenterX, 1f, 0),
@@ -133,21 +133,6 @@ protected virtual void OnInputUpdated (object sender, EventArgs e)
133133
ViewModel.Value = (T)Activator.CreateInstance (typeof(T), XEditor.Value, YEditor.Value, WidthEditor.Value, HeightEditor.Value);
134134
}
135135

136-
protected override void HandleErrorsChanged (object sender, System.ComponentModel.DataErrorsChangedEventArgs e)
137-
{
138-
UpdateErrorsDisplayed (ViewModel.GetErrors (ViewModel.Property.Name));
139-
}
140-
141-
protected override void UpdateErrorsDisplayed (IEnumerable errors)
142-
{
143-
if (ViewModel.HasErrors) {
144-
SetErrors (errors);
145-
} else {
146-
SetErrors (null);
147-
SetEnabled ();
148-
}
149-
}
150-
151136
protected override void SetEnabled ()
152137
{
153138
XEditor.Enabled = ViewModel.Property.CanWrite;

Xamarin.PropertyEditing.Mac/Controls/BooleanEditorControl.cs

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ public BooleanEditorControl (IHostResourceProvider hostResource)
3131
AddSubview (BooleanEditor);
3232

3333
this.AddConstraints (new[] {
34-
NSLayoutConstraint.Create (BooleanEditor, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 6f),
35-
NSLayoutConstraint.Create (BooleanEditor, NSLayoutAttribute.Width, NSLayoutRelation.Equal, this, NSLayoutAttribute.Width, 1f, -50f),
34+
NSLayoutConstraint.Create (BooleanEditor, NSLayoutAttribute.CenterY, NSLayoutRelation.Equal, this, NSLayoutAttribute.CenterY, 1f, 0f),
35+
NSLayoutConstraint.Create (BooleanEditor, NSLayoutAttribute.Width, NSLayoutRelation.Equal, this, NSLayoutAttribute.Width, 1f, 0f),
3636
});
3737
}
3838

@@ -59,21 +59,6 @@ protected override void UpdateValue ()
5959
}
6060
}
6161

62-
protected override void UpdateErrorsDisplayed (IEnumerable errors)
63-
{
64-
if (ViewModel.HasErrors) {
65-
SetErrors (errors);
66-
} else {
67-
SetErrors (null);
68-
SetEnabled ();
69-
}
70-
}
71-
72-
protected override void HandleErrorsChanged (object sender, System.ComponentModel.DataErrorsChangedEventArgs e)
73-
{
74-
UpdateErrorsDisplayed (ViewModel.GetErrors (ViewModel.Property.Name));
75-
}
76-
7762
protected override void SetEnabled ()
7863
{
7964
BooleanEditor.Enabled = ViewModel.Property.CanWrite;

Xamarin.PropertyEditing.Mac/Controls/BrushEditorControl.cs

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ public BrushEditorControl (IHostResourceProvider hostResources)
5454
};
5555

5656
this.popUpButton = new ColorPopUpButton {
57-
Font = NSFont.FromFontName (DefaultFontName, DefaultFontSize),
57+
ControlSize = NSControlSize.Small,
58+
Font = NSFont.SystemFontOfSize (NSFont.SystemFontSizeForControlSize (NSControlSize.Small)),
5859
TranslatesAutoresizingMaskIntoConstraints = false,
5960
};
6061

@@ -64,9 +65,9 @@ public BrushEditorControl (IHostResourceProvider hostResources)
6465
AddSubview (this.popUpButton);
6566

6667
this.AddConstraints (new[] {
67-
NSLayoutConstraint.Create (this.popUpButton, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, 2f),
68-
NSLayoutConstraint.Create (this.popUpButton, NSLayoutAttribute.Width, NSLayoutRelation.Equal, this, NSLayoutAttribute.Width, 1f, -32f),
69-
NSLayoutConstraint.Create (this.popUpButton, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight - 3),
68+
NSLayoutConstraint.Create (this.popUpButton, NSLayoutAttribute.Width, NSLayoutRelation.Equal, this, NSLayoutAttribute.Width, 1f, 0),
69+
NSLayoutConstraint.Create (this.popUpButton, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 16),
70+
NSLayoutConstraint.Create (this.popUpButton, NSLayoutAttribute.CenterY, NSLayoutRelation.Equal, this, NSLayoutAttribute.CenterY, 1f, 0),
7071
});
7172

7273
ViewDidChangeEffectiveAppearance ();
@@ -89,23 +90,11 @@ public override void ViewDidChangeEffectiveAppearance ()
8990
public override NSView FirstKeyView => this.popUpButton;
9091
public override NSView LastKeyView => this.popUpButton;
9192

92-
protected override void HandleErrorsChanged (object sender, DataErrorsChangedEventArgs e)
93-
{
94-
}
95-
9693
protected override void SetEnabled ()
9794
{
9895
this.popUpButton.Enabled = this.ViewModel?.Property.CanWrite ?? false;
9996
}
10097

101-
protected override void UpdateAccessibilityValues ()
102-
{
103-
}
104-
105-
protected override void UpdateErrorsDisplayed (IEnumerable errors)
106-
{
107-
}
108-
10998
string GetTitle ()
11099
{
111100
var title = LocalizationResources.CommonBrushTitleUnknown;

Xamarin.PropertyEditing.Mac/Controls/CombinablePropertyEditor.cs

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,7 @@ public CombinablePropertyEditor (IHostResourceProvider hostResources)
3131
public override nint GetHeight (EditorViewModel vm)
3232
{
3333
var realVm = (CombinablePropertyViewModel<T>)vm;
34-
return DefaultControlHeight * realVm.Choices.Count;
35-
}
36-
37-
protected override void HandleErrorsChanged (object sender, DataErrorsChangedEventArgs e)
38-
{
39-
UpdateErrorsDisplayed (ViewModel.GetErrors (e.PropertyName));
34+
return subrowHeight * realVm.Choices.Count + 6;
4035
}
4136

4237
protected override void SetEnabled ()
@@ -46,24 +41,14 @@ protected override void SetEnabled ()
4641
}
4742
}
4843

49-
protected override void UpdateErrorsDisplayed (IEnumerable errors)
50-
{
51-
if (ViewModel.HasErrors) {
52-
SetErrors (errors);
53-
} else {
54-
SetErrors (null);
55-
SetEnabled ();
56-
}
57-
}
58-
5944
protected override void OnViewModelChanged (PropertyViewModel oldModel)
6045
{
6146
base.OnViewModelChanged (oldModel);
6247

6348
if (ViewModel == null)
6449
return;
6550

66-
float top = 0;
51+
float top = 3;
6752

6853
while (this.combinableList.Count > ViewModel.Choices.Count) {
6954
var child = this.combinableList.KeyAt (ViewModel.Choices.Count);
@@ -78,16 +63,15 @@ protected override void OnViewModelChanged (PropertyViewModel oldModel)
7863
NSButton checkbox;
7964
if (i >= this.combinableList.Count) {
8065
checkbox = new FocusableBooleanButton ();
81-
8266
checkbox.Activated += SelectionChanged;
8367

8468
AddSubview (checkbox);
8569

8670
this.AddConstraints (new[] {
8771
NSLayoutConstraint.Create (checkbox, NSLayoutAttribute.Top, NSLayoutRelation.Equal, this, NSLayoutAttribute.Top, 1f, top),
8872
NSLayoutConstraint.Create (checkbox, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1f, 0f),
89-
NSLayoutConstraint.Create (checkbox, NSLayoutAttribute.Width, NSLayoutRelation.Equal, this, NSLayoutAttribute.Width, 1f, -33f),
90-
NSLayoutConstraint.Create (checkbox, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, DefaultControlHeight),
73+
NSLayoutConstraint.Create (checkbox, NSLayoutAttribute.Width, NSLayoutRelation.Equal, this, NSLayoutAttribute.Width, 1f, 0),
74+
NSLayoutConstraint.Create (checkbox, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, subrowHeight),
9175
});
9276
} else {
9377
checkbox = this.combinableList.KeyAt (i);
@@ -96,7 +80,7 @@ protected override void OnViewModelChanged (PropertyViewModel oldModel)
9680
checkbox.Title = choice.Name;
9781

9882
this.combinableList[checkbox] = choice;
99-
top += DefaultControlHeight;
83+
top += subrowHeight;
10084
}
10185

10286
// Set our tabable order
@@ -127,6 +111,7 @@ protected override void UpdateAccessibilityValues ()
127111
}
128112
}
129113

114+
private const int subrowHeight = 20;
130115
private readonly OrderedDictionary<NSButton, FlaggableChoiceViewModel<T>> combinableList = new OrderedDictionary<NSButton, FlaggableChoiceViewModel<T>> ();
131116
private NSView firstKeyView;
132117
private NSView lastKeyView;

Xamarin.PropertyEditing.Mac/Controls/Custom/BasePopOverControl.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public BasePopOverControl (IHostResourceProvider hostResources, string title, st
4848
NSLayoutConstraint.Create (viewTitle, NSLayoutAttribute.Left, NSLayoutRelation.Equal, iconView, NSLayoutAttribute.Right, 1f, 5f),
4949
//NSLayoutConstraint.Create (viewTitle, NSLayoutAttribute.Left, NSLayoutRelation.Equal, this, NSLayoutAttribute.Left, 1f, 38f),
5050
NSLayoutConstraint.Create (viewTitle, NSLayoutAttribute.Width, NSLayoutRelation.Equal, 1f, 120),
51-
NSLayoutConstraint.Create (viewTitle, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, PropertyEditorControl.DefaultControlHeight),
51+
NSLayoutConstraint.Create (viewTitle, NSLayoutAttribute.Height, NSLayoutRelation.Equal, 1f, 24),
5252
});
5353
}
5454

0 commit comments

Comments
 (0)