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:
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeBuilder.cs')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeBuilder.cs44
1 files changed, 21 insertions, 23 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeBuilder.cs
index 6f064e368f..8c810ff21f 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeBuilder.cs
@@ -187,9 +187,9 @@ namespace MonoDevelop.Ide.Gui.Components
if (!currentIter.Equals (Gtk.TreeIter.Zero)) {
if (!Filled)
continue;
- it = store.InsertWithValues (currentIter, 0, "", null, null, dataObject, chain, false);
+ it = store.InsertWithValues (currentIter, 0, NodeInfo.Empty, dataObject, chain, false);
} else {
- it = store.AppendValues ("", null, null, dataObject, chain, false);
+ it = store.AppendValues (NodeInfo.Empty, dataObject, chain, false);
}
pad.RegisterNode (it, dataObject, chain, true);
@@ -219,10 +219,10 @@ namespace MonoDevelop.Ide.Gui.Components
Gtk.TreeIter it;
if (!currentIter.Equals (Gtk.TreeIter.Zero)) {
if (!Filled) return;
- it = store.AppendValues (currentIter, "", null, null, dataObject, chain, false);
+ it = store.AppendValues (currentIter, NodeInfo.Empty, dataObject, chain, false);
}
else
- it = store.AppendValues ("", null, null, dataObject, chain, false);
+ it = store.AppendValues (NodeInfo.Empty, dataObject, chain, false);
pad.RegisterNode (it, dataObject, chain, true);
@@ -277,16 +277,26 @@ namespace MonoDevelop.Ide.Gui.Components
void UpdateNode (NodeBuilder[] chain, NodeAttributes ats, object dataObject)
{
- var ni = GetNodeInfo (pad, this, chain, dataObject);
- SetNodeInfo (currentIter, ats, ni);
+ bool isNew = false;
+
+ var ni = (NodeInfo)store.GetValue (currentIter, ExtensibleTreeView.NodeInfoColumn);
+ if (ni == null || ni.IsShared) {
+ ni = new NodeInfo ();
+ isNew = true;
+ }
+ else
+ ni.Reset ();
+
+ GetNodeInfo (ni, pad, this, chain, dataObject);
+
+ if (isNew)
+ store.SetValue (currentIter, ExtensibleTreeView.NodeInfoColumn, ni);
+ else
+ store.EmitRowChanged (store.GetPath (currentIter), currentIter);
}
- internal static NodeInfo GetNodeInfo (ExtensibleTreeView tree, ITreeBuilder tb, NodeBuilder[] chain, object dataObject)
+ internal static NodeInfo GetNodeInfo (NodeInfo nodeInfo, ExtensibleTreeView tree, ITreeBuilder tb, NodeBuilder[] chain, object dataObject)
{
- NodeInfo nodeInfo = new NodeInfo () {
- Label = string.Empty
- };
-
NodePosition pos = tb.CurrentPosition;
foreach (NodeBuilder builder in chain) {
@@ -317,18 +327,6 @@ namespace MonoDevelop.Ide.Gui.Components
return nodeInfo;
}
- void SetNodeInfo (Gtk.TreeIter it, NodeAttributes ats, NodeInfo nodeInfo)
- {
- store.SetValue (it, ExtensibleTreeView.TextColumn, nodeInfo.Label);
- store.SetValue (it, ExtensibleTreeView.OpenIconColumn, nodeInfo.Icon ?? CellRendererImage.NullImage);
- store.SetValue (it, ExtensibleTreeView.ClosedIconColumn, nodeInfo.ClosedIcon ?? CellRendererImage.NullImage);
- store.SetValue (it, ExtensibleTreeView.OverlayBottomLeftColumn, nodeInfo.OverlayBottomLeft ?? CellRendererImage.NullImage);
- store.SetValue (it, ExtensibleTreeView.OverlayBottomRightColumn, nodeInfo.OverlayBottomRight ?? CellRendererImage.NullImage);
- store.SetValue (it, ExtensibleTreeView.OverlayTopLeftColumn, nodeInfo.OverlayTopLeft ?? CellRendererImage.NullImage);
- store.SetValue (it, ExtensibleTreeView.OverlayTopRightColumn, nodeInfo.OverlayTopRight ?? CellRendererImage.NullImage);
- pad.Tree.QueueDraw ();
- }
-
void CreateChildren (NodeBuilder[] chain, object dataObject)
{
Gtk.TreeIter it = currentIter;