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:
authoriain holmes <iain@xamarin.com>2017-01-27 15:35:48 +0300
committeriain holmes <iain@xamarin.com>2017-01-27 15:35:48 +0300
commit576ac331b8b0a78f5988f4f2d363878df54d57ae (patch)
tree11cd80ed8bd9d93ccfd928c4146e29cd80b19a1f /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components
parent6db0ef613e51569cfbd8abadee6c91af824437ce (diff)
parentb65a34ba71c8f1c6ac2512b3a04e0c320f7c5a54 (diff)
Merge remote-tracking branch 'upstream/master' into a11y
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs34
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeBuilder.cs15
2 files changed, 44 insertions, 5 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs
index 7966cb88d5..fe9991b15d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs
@@ -219,8 +219,7 @@ namespace MonoDevelop.Ide.Gui.Components
store.SetSortColumnId (/* GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID */ -1, Gtk.SortType.Ascending);
tree.HeadersVisible = false;
- tree.SearchColumn = 0;
- tree.EnableSearch = true;
+ tree.EnableSearch = false;
complete_column = new Gtk.TreeViewColumn ();
complete_column.Title = "column";
@@ -1599,15 +1598,23 @@ namespace MonoDevelop.Ide.Gui.Components
NodeBuilder[] chain1 = (NodeBuilder[]) store.GetValue (a, BuilderChainColumn);
if (chain1 == null) return -1;
+ NodeBuilder [] chain2 = (NodeBuilder [])store.GetValue (b, BuilderChainColumn);
+ if (chain2 == null) return 1;
+
compareNode1.MoveToIter (a);
compareNode2.MoveToIter (b);
+ var i1 = GetSortIndex (chain1, compareNode1);
+ var i2 = GetSortIndex (chain2, compareNode2);
+
+ if (i1 < i2)
+ return -1;
+ else if (i1 > i2)
+ return 1;
+
int sort = CompareObjects (chain1, compareNode1, compareNode2);
if (sort != TypeNodeBuilder.DefaultSort) return sort;
- NodeBuilder[] chain2 = (NodeBuilder[]) store.GetValue (b, BuilderChainColumn);
- if (chain2 == null) return 1;
-
if (chain1 != chain2) {
sort = CompareObjects (chain2, compareNode2, compareNode1);
if (sort != TypeNodeBuilder.DefaultSort) return sort * -1;
@@ -1636,6 +1643,17 @@ namespace MonoDevelop.Ide.Gui.Components
return result;
}
+ int GetSortIndex (NodeBuilder [] chain, ITreeNavigator node)
+ {
+ int result = 0;
+ for (int n = 0; n < chain.Length; n++) {
+ int sort = chain [n].GetSortIndex (node);
+ if (sort != NodeBuilder.DefaultSort)
+ result = sort;
+ }
+ return result;
+ }
+
internal bool GetFirstNode (object dataObject, out Gtk.TreeIter iter)
{
object it;
@@ -2088,6 +2106,12 @@ namespace MonoDevelop.Ide.Gui.Components
}
}
+ [CommandHandler (SearchCommands.Find)]
+ void HandleSearchCommand ()
+ {
+ IdeApp.CommandService.DispatchCommand (MonoDevelop.Components.MainToolbar.Commands.NavigateTo);
+ }
+
void Expand (Gtk.TreeIter it)
{
tree.ExpandRow (store.GetPath (it), false);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeBuilder.cs
index 3f61621ea2..b7a842d75c 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/NodeBuilder.cs
@@ -135,6 +135,21 @@ namespace MonoDevelop.Ide.Gui.Components
return DefaultSort;
}
+ /// <summary>
+ /// Gets the sort index for this node
+ /// </summary>
+ /// <returns>The sort index.</returns>
+ /// <param name="node">A tree node.</param>
+ /// <remarks>
+ /// The sort index is used to determine the relative ordering of nodes. Nodes with a higher sort index are
+ /// placed after nodes with lower index. When the index of two nodes is the same, the CompareObjects
+ /// method is used to determine the ordering. The default value is 0.
+ /// </remarks>
+ public virtual int GetSortIndex (ITreeNavigator node)
+ {
+ return DefaultSort;
+ }
+
// Helper methods
internal static bool HasAttribute (ITreeNavigator treeNavigator, NodeAttributes attr, NodeBuilder[] chain, object dataObject)