diff options
author | Eric Maupin <ermaup@microsoft.com> | 2018-09-19 00:30:39 +0300 |
---|---|---|
committer | Eric Maupin <ermaup@microsoft.com> | 2018-10-03 22:02:41 +0300 |
commit | 41a442dfb504cf5b91ae956a4439a1ca0ab35ae7 (patch) | |
tree | 99877d5339977aa670f505e1a50f2cff151db314 /Xamarin.PropertyEditing.Mac/Controls | |
parent | 3d7b1d872a4ffcc73d4ff05288fb7519414692da (diff) |
[mac] Fix color tab selection on reuse
Diffstat (limited to 'Xamarin.PropertyEditing.Mac/Controls')
-rw-r--r-- | Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs | 43 |
1 files changed, 32 insertions, 11 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs index cd573f0..bc5b290 100644 --- a/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs +++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs @@ -9,15 +9,16 @@ namespace Xamarin.PropertyEditing.Mac where TViewModel : NotifyingObject { public override void AddTabViewItem (NSTabViewItem tabViewItem) - { - base.AddTabViewItem (tabViewItem);
- this.tabStack.AddView (GetView (tabViewItem), NSStackViewGravity.Leading); + {
+ this.tabStack.AddView (GetView (tabViewItem), NSStackViewGravity.Leading);
+ base.AddTabViewItem (tabViewItem); }
public override void InsertTabViewItem (NSTabViewItem tabViewItem, nint index) { - base.InsertTabViewItem (tabViewItem, index);
- this.tabStack.InsertView (GetView (tabViewItem), (nuint)index, NSStackViewGravity.Leading); +
+ this.tabStack.InsertView (GetView (tabViewItem), (nuint)index, NSStackViewGravity.Leading);
+ base.InsertTabViewItem (tabViewItem, index); } public override void RemoveTabViewItem (NSTabViewItem tabViewItem) @@ -52,12 +53,20 @@ namespace Xamarin.PropertyEditing.Mac public override void DidSelect (NSTabView tabView, NSTabViewItem item) { - base.DidSelect (tabView, item); - for (int i = 0; i < this.tabStack.Views.Length; i++) { - var tabItem = this.tabStack.Views[i] as IUnderliningTabView; - if (tabItem != null) - tabItem.Selected = SelectedTabViewItemIndex == i; - } + base.DidSelect (tabView, item);
+
+ int i = (int)TabView.IndexOf (item);
+ SetSelected (i); + }
+
+ public override nint SelectedTabViewItemIndex
+ {
+ get => base.SelectedTabViewItemIndex;
+ set + {
+ base.SelectedTabViewItemIndex = value;
+ SetSelected ((int)value);
+ }
} public override void LoadView () @@ -81,6 +90,7 @@ namespace Xamarin.PropertyEditing.Mac View = this.outerStack; }
+ private IUnderliningTabView selected;
private NSStackView outerStack;
private NSStackView innerStack;
private NSStackView tabStack = new NSStackView () {
@@ -89,6 +99,17 @@ namespace Xamarin.PropertyEditing.Mac private NSEdgeInsets edgeInsets = new NSEdgeInsets (0, 0, 0, 0);
+ private void SetSelected (int index)
+ {
+ if (this.selected != null) {
+ this.selected.Selected = false;
+ }
+
+ this.selected = this.tabStack.Views[index] as IUnderliningTabView;
+ if (this.selected != null)
+ this.selected.Selected = true;
+ }
+
private NSView GetView (NSTabViewItem item)
{
NSView tabView;
|