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-18 22:48:12 +0300
committerEric Maupin <ermaup@microsoft.com>2018-10-03 20:24:50 +0300
commit6f85298ec4271883a6c5c558f70e17afd5681ec3 (patch)
tree81522ad6302646710915da2180f2eeefac7c6725 /Xamarin.PropertyEditing.Mac/Controls/Custom
parent975418467231e9777df106a9c1a84c455d6dd7d8 (diff)
[mac] Don't rebuild tab list for every single tab change
Diffstat (limited to 'Xamarin.PropertyEditing.Mac/Controls/Custom')
-rw-r--r--Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs73
1 files changed, 37 insertions, 36 deletions
diff --git a/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs b/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs
index e4d4b5f..51fd587 100644
--- a/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs
+++ b/Xamarin.PropertyEditing.Mac/Controls/Custom/UnderlinedTabViewController.cs
@@ -1,37 +1,45 @@
-using System.Linq;
+using System;
+using System.Linq;
using AppKit;
namespace Xamarin.PropertyEditing.Mac
{
- internal class UnderlinedTabViewController<TViewModel> : NotifyingTabViewController<TViewModel> where TViewModel : NotifyingObject
+ internal class UnderlinedTabViewController<TViewModel>
+ : NotifyingTabViewController<TViewModel>
+ where TViewModel : NotifyingObject
{
- public override void NumberOfItemsChanged (NSTabView tabView)
+ public override void AddTabViewItem (NSTabViewItem item)
{
- base.NumberOfItemsChanged (tabView);
- var items = this.tabStack.Views.ToList ();
- foreach (var view in items) {
- this.tabStack.RemoveView (view);
- view.Dispose ();
- }
- var i = 0;
- foreach (var item in TabViewItems) {
- if (item.Image != null) {
- this.tabStack.AddView (new UnderlinedImageView (item.Image.Name) {
- Selected = i == SelectedTabViewItemIndex,
- ToolTip = item.ToolTip,
- }, NSStackViewGravity.Leading);
- } else {
- this.tabStack.AddView (new UnderlinedTextField () {
- BackgroundColor = NSColor.Clear,
- Editable = false,
- Bezeled = false,
- StringValue = item.Label,
- Selected = i == SelectedTabViewItemIndex,
- ToolTip = item.ToolTip,
- }, NSStackViewGravity.Leading);
- }
- i++;
- }
+ base.AddTabViewItem (item);
+
+ NSView tabView;
+ if (item.Image != null) {
+ tabView = new UnderlinedImageView (item.Image.Name) {
+ Selected = this.tabStack.Views.Length == SelectedTabViewItemIndex,
+ ToolTip = item.ToolTip
+ };
+ } else {
+ tabView = new UnderlinedTextField {
+ BackgroundColor = NSColor.Clear,
+ Editable = false,
+ Bezeled = false,
+ StringValue = item.Label,
+ Selected = this.tabStack.Views.Length == SelectedTabViewItemIndex,
+ ToolTip = item.ToolTip
+ };
+ }
+
+ this.tabStack.AddView (tabView, NSStackViewGravity.Leading);
+ }
+
+ public override void RemoveTabViewItem (NSTabViewItem tabViewItem)
+ {
+ int index = (int)TabView.IndexOf (tabViewItem);
+ NSView tabView = this.tabStack.Views[index];
+ this.tabStack.RemoveView (tabView);
+ tabView.Dispose ();
+
+ base.RemoveTabViewItem (tabViewItem);
}
private NSStackView outerStack;
@@ -58,14 +66,7 @@ namespace Xamarin.PropertyEditing.Mac
if (!(hit is IUnderliningTabView))
return;
- int i = 0;
- foreach (var label in tabStack.Views) {
- if (hit == label) {
- SelectedTabViewItemIndex = i;
- break;
- }
- i++;
- }
+ SelectedTabViewItemIndex = Array.IndexOf (this.tabStack.Views, hit);
}
public override void DidSelect (NSTabView tabView, NSTabViewItem item)