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:
authorEric Maupin <ermaup@microsoft.com>2018-09-19 00:30:39 +0300
committerEric Maupin <ermaup@microsoft.com>2018-10-03 22:02:41 +0300
commit41a442dfb504cf5b91ae956a4439a1ca0ab35ae7 (patch)
tree99877d5339977aa670f505e1a50f2cff151db314 /Xamarin.PropertyEditing.Mac/Controls
parent3d7b1d872a4ffcc73d4ff05288fb7519414692da (diff)
[mac] Fix color tab selection on reuse
Diffstat (limited to 'Xamarin.PropertyEditing.Mac/Controls')
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs43
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;