Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Munn <gregm@microsoft.com>2019-07-24 22:20:04 +0300
committerGreg Munn <gregm@microsoft.com>2019-07-24 22:26:21 +0300
commitc8b01bfd8e7c6abbf2d865c42cccea8c5728b900 (patch)
tree7b509bcae81273cfb4c5a1482645b1baa28f9415 /main/src/addins
parent56dae5299e6e6b712811a4fcf6522e4344ff242a (diff)
[ObjectValue] Invert AllowEditing, HeadersVisible from controller to view
Diffstat (limited to 'main/src/addins')
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugValueWindow.cs3
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/Gtk/GtkObjectValueTreeView.cs27
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/IObjectValueTreeView.cs8
-rw-r--r--main/src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValue/ObjectValueTreeViewController.cs32
-rw-r--r--main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/PinnedWatchWidget.cs2
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)