Author: lluis
Date: 2008-02-18 05:31:30 -0500 (Mon, 18 Feb 2008)
New Revision: 96039
Modified:
trunk/monodevelop/main/src/core/MonoDevelop.Ide/ChangeLog
trunk/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/MonoDevelopTreeView.cs
Log:
* MonoDevelop.Ide.Gui/MonoDevelopTreeView.cs: If there are several
valid node type builders for a type, make sure to pick the most
specific one.
Modified: trunk/monodevelop/main/src/core/MonoDevelop.Ide/ChangeLog
===================================================================
--- trunk/monodevelop/main/src/core/MonoDevelop.Ide/ChangeLog 2008-02-18
10:30:16 UTC (rev 96038)
+++ trunk/monodevelop/main/src/core/MonoDevelop.Ide/ChangeLog 2008-02-18
10:31:30 UTC (rev 96039)
@@ -1,3 +1,8 @@
+2008-02-18 Lluis Sanchez Gual <[EMAIL PROTECTED]>
+
+ * MonoDevelop.Ide.Gui/MonoDevelopTreeView.cs: If there are several valid
+ node type builders for a type, make sure to pick the most specific
one.
+
2008-02-18 Mike Krüger <[EMAIL PROTECTED]>
* MonoDevelop.Ide.Gui.Content/TextEditorProperties.cs: Fixed tabs2spaces
Modified:
trunk/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/MonoDevelopTreeView.cs
===================================================================
---
trunk/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/MonoDevelopTreeView.cs
2008-02-18 10:30:16 UTC (rev 96038)
+++
trunk/monodevelop/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/MonoDevelopTreeView.cs
2008-02-18 10:31:30 UTC (rev 96039)
@@ -833,10 +833,20 @@
if (chain == null)
{
ArrayList list = new ArrayList ();
+
+ // Find the most specific node builder type.
+ TypeNodeBuilder bestTypeNodeBuilder = null;
+ Type bestNodeType = null;
+
foreach (NodeBuilder nb in builders) {
if (nb is TypeNodeBuilder) {
- if
(((TypeNodeBuilder)nb).NodeDataType.IsAssignableFrom (type))
- list.Insert (0, nb);
+ TypeNodeBuilder tnb =
(TypeNodeBuilder) nb;
+ if
(tnb.NodeDataType.IsAssignableFrom (type)) {
+ if (bestNodeType ==
null || bestNodeType.IsAssignableFrom (tnb.NodeDataType)) {
+ bestNodeType =
tnb.NodeDataType;
+
bestTypeNodeBuilder = tnb;
+ }
+ }
}
else {
try {
@@ -848,11 +858,12 @@
}
}
- chain = (NodeBuilder[]) list.ToArray
(typeof(NodeBuilder));
+ if (bestTypeNodeBuilder != null) {
+ list.Insert (0, bestTypeNodeBuilder);
+ chain = (NodeBuilder[]) list.ToArray
(typeof(NodeBuilder));
+ } else
+ chain = null;
- if (chain.Length == 0 || !(chain[0] is
TypeNodeBuilder))
- chain = null;
-
builderChains [type] = chain;
}
return chain;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches