diff options
author | Greg Munn <gregm@microsoft.com> | 2019-07-24 22:20:04 +0300 |
---|---|---|
committer | Greg Munn <gregm@microsoft.com> | 2019-07-24 22:26:21 +0300 |
commit | c8b01bfd8e7c6abbf2d865c42cccea8c5728b900 (patch) | |
tree | 7b509bcae81273cfb4c5a1482645b1baa28f9415 /main/src/addins | |
parent | 56dae5299e6e6b712811a4fcf6522e4344ff242a (diff) |
[ObjectValue] Invert AllowEditing, HeadersVisible from controller to view
Diffstat (limited to 'main/src/addins')
5 files changed, 47 insertions, 25 deletions
diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugValueWindow.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugValueWindow.cs index c3a0712c3c..c637abe300 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugValueWindow.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugValueWindow.cs @@ -95,7 +95,6 @@ namespace MonoDevelop.Debugger controller = new ObjectValueTreeViewController (); controller.SetStackFrame (frame); controller.RootPinAlwaysVisible = true; - controller.HeadersVisible = false; controller.AllowEditing = true; controller.AllowPinning = true; controller.CompactView = true; @@ -107,7 +106,7 @@ namespace MonoDevelop.Debugger controller.StartEditing += OnStartEditing; controller.EndEditing += OnEndEditing; - treeView = (TreeView) controller.GetControl (); + treeView = (TreeView) controller.GetControl (headersVisible: false); controller.AddValue (value); } else { diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs index 8f461a64b6..ca45552ce5 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs @@ -49,7 +49,7 @@ namespace MonoDevelop.Debugger { // TODO: when we remove from store, remove from allNodes [System.ComponentModel.ToolboxItem (true)] - public class GtkObjectValueTreeView : TreeView, ICompletionWidget + public class GtkObjectValueTreeView : TreeView, ICompletionWidget, IObjectValueTreeView { static readonly Gtk.TargetEntry [] DropTargets = { new Gtk.TargetEntry ("text/plain;charset=utf-8", Gtk.TargetFlags.App, 0) @@ -131,8 +131,12 @@ namespace MonoDevelop.Debugger menuSet.AddItem (EditCommands.DeleteKey); } - public GtkObjectValueTreeView (ObjectValueTreeViewController controller) + public GtkObjectValueTreeView (ObjectValueTreeViewController controller, bool allowEditing, bool headersVisible) { + // ensure this is set when we set up the view, don't try and refresh just yet + this.allowEditing = allowEditing; + + this.controller = controller; this.controller.PinnedWatchChanged += Controller_PinnedWatchChanged; this.controller.ChildrenLoaded += Controller_NodeChildrenLoaded; @@ -142,7 +146,7 @@ namespace MonoDevelop.Debugger Model = store; SearchColumn = -1; // disable the interactive search RulesHint = true; - HeadersVisible = controller.HeadersVisible; + HeadersVisible = headersVisible; EnableSearch = false; Selection.Mode = Gtk.SelectionMode.Multiple; Selection.Changed += HandleSelectionChanged; @@ -267,6 +271,23 @@ namespace MonoDevelop.Debugger AdjustColumnSizes (); } + bool allowEditing; + + /// <summary> + /// Gets a value indicating whether the user should be able to edit values in the tree + /// </summary> + public bool AllowEditing { + get => allowEditing; + set { + if (allowEditing == value) + return; + + allowEditing = value; + + Refresh (false); + } + } + protected override void OnDestroyed () { CompletionWindowManager.WindowClosed -= HandleCompletionWindowClosed; diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs index 6c69ab58df..ec72ba82bb 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs @@ -28,8 +28,16 @@ using System; namespace MonoDevelop.Debugger { + /// <summary> + /// Defines the interface to the view that ObjectValueTreeViewController can interact with + /// </summary> public interface IObjectValueTreeView { + /// <summary> + /// Gets a value indicating whether the user should be able to edit values in the tree + /// </summary> + bool AllowEditing { get; set; } + event EventHandler<ObjectValueNodeEventArgs> NodeExpanded; event EventHandler<ObjectValueNodeEventArgs> NodeCollapsed; diff --git a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs index 5e1983ed21..80000cc368 100644 --- a/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs +++ b/main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs @@ -47,6 +47,8 @@ namespace MonoDevelop.Debugger { readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource (); public const int MaxEnumerableChildrenToFetch = 20; + + IObjectValueTreeView view; IDebuggerService debuggerService; PinnedWatch pinnedWatch; bool allowWatchExpressions; @@ -72,7 +74,6 @@ namespace MonoDevelop.Debugger public ObjectValueTreeViewController () { AllowPopupMenu = true; - HeadersVisible = true; } public IDebuggerService Debugger { @@ -95,14 +96,9 @@ namespace MonoDevelop.Debugger public bool AllowEditing { get => allowEditing; set { - if (allowEditing == value) - return; - allowEditing = value; - - // trigger a refresh - if (Root != null) { - OnChildrenLoaded (Root, 0, Root.Children.Count); + if (view != null) { + view.AllowEditing = value; } } } @@ -143,13 +139,6 @@ namespace MonoDevelop.Debugger get; set; } - /// <summary> - /// Gets a value indicating whether or not the table columns should be visible. - /// </summary> - public bool HeadersVisible { - get; set; - } - #region Pinned Watches /// <summary> @@ -257,12 +246,17 @@ namespace MonoDevelop.Debugger /// </summary> public event EventHandler<ObjectValueNodeEvaluationCompletedEventArgs> EvaluationCompleted; - public object GetControl () + public object GetControl (bool headersVisible = true) { - var view = new GtkObjectValueTreeView (this); + if (view == null) { + view = new GtkObjectValueTreeView (this, AllowEditing, headersVisible) { + //AllowEditing = this.AllowEditing + //HeadersVisible = headersVisible, + }; - view.NodeExpanded += OnViewNodeExpanded; - view.NodeCollapsed += OnViewNodeCollapsed; + view.NodeExpanded += OnViewNodeExpanded; + view.NodeCollapsed += OnViewNodeCollapsed; + } return view; } diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs index b65c3d738f..c6cd70522c 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs @@ -93,7 +93,7 @@ namespace MonoDevelop.SourceEditor controller.CompactView = true; controller.PinnedWatch = watch; - treeView = (TreeView) controller.GetControl (); + treeView = (TreeView) controller.GetControl (headersVisible: false); valueTree = null; if (objectValue != null) |