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:
authorLluis Sanchez <lluis@novell.com>2009-05-20 20:01:57 +0400
committerLluis Sanchez <lluis@novell.com>2009-05-20 20:01:57 +0400
commit3513c5d466b0f3722c72e2a78ed1efdb3dba3868 (patch)
treeded67e33d8e47023b99497797e96ccee90913728
parent66427f6ce997207bc0271d5b9dea82ae90aa00f7 (diff)
* MonoDevelop.Ide.Gui.Pads\ErrorListPad.cs:
* MonoDevelop.Ide.Gui.Pads\MonodocTreePad.cs: * MonoDevelop.Ide.Gui.Components\TreeNodeNavigator.cs: * MonoDevelop.Ide.Gui.OptionPanels\MonoRuntimePanel.cs: * MonoDevelop.Ide.Gui.Dialogs\SelectEncodingsDialog.cs: * MonoDevelop.Ide.Gui.Components\ExtensibleTreeView.cs: * MonoDevelop.Ide.Gui.Components\TransactedTreeBuilder.cs: Don't use Gtk.TreeIter.Equals, since it's broken. Compare TreePaths instead. * MonoDevelop.Ide.Tasks\TaskService.cs: CommentTaskChangedEventArgs now provides the project of the file. Use it instead of looking for it in the ide. svn path=/trunk/monodevelop/; revision=134455
-rw-r--r--main/src/core/MonoDevelop.Ide/ChangeLog16
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs78
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TransactedTreeBuilder.cs17
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs15
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/SelectEncodingsDialog.cs13
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs4
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs15
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/MonodocTreePad.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskService.cs5
9 files changed, 117 insertions, 48 deletions
diff --git a/main/src/core/MonoDevelop.Ide/ChangeLog b/main/src/core/MonoDevelop.Ide/ChangeLog
index 644d36d74f..a804392233 100644
--- a/main/src/core/MonoDevelop.Ide/ChangeLog
+++ b/main/src/core/MonoDevelop.Ide/ChangeLog
@@ -1,3 +1,19 @@
+2009-05-20 Lluis Sanchez Gual <lluis@novell.com>
+
+ * MonoDevelop.Ide.Gui.Pads\ErrorListPad.cs:
+ * MonoDevelop.Ide.Gui.Pads\MonodocTreePad.cs:
+ * MonoDevelop.Ide.Gui.Components\TreeNodeNavigator.cs:
+ * MonoDevelop.Ide.Gui.OptionPanels\MonoRuntimePanel.cs:
+ * MonoDevelop.Ide.Gui.Dialogs\SelectEncodingsDialog.cs:
+ * MonoDevelop.Ide.Gui.Components\ExtensibleTreeView.cs:
+ * MonoDevelop.Ide.Gui.Components\TransactedTreeBuilder.cs:
+ Don't use Gtk.TreeIter.Equals, since it's broken. Compare
+ TreePaths instead.
+
+ * MonoDevelop.Ide.Tasks\TaskService.cs:
+ CommentTaskChangedEventArgs now provides the project of the
+ file. Use it instead of looking for it in the ide.
+
2009-05-19 Lluis Sanchez Gual <lluis@novell.com>
* MonoDevelop.Ide.Templates/SingleFileDescriptionTemplate.cs:
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 326e489e06..37c0ce83c5 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
@@ -72,8 +72,8 @@ namespace MonoDevelop.Ide.Gui.Components
bool editingText = false;
TreePadOption[] options;
- TreeOptions globalOptions;
- Hashtable nodeOptions = new Hashtable ();
+ TreeOptions globalOptions;
+ Dictionary<Gtk.TreeIter, TreeOptions> nodeOptions;
TreeNodeNavigator workNode;
TreeNodeNavigator compareNode1;
@@ -168,6 +168,7 @@ namespace MonoDevelop.Ide.Gui.Components
store = new Gtk.TreeStore (typeof (string), typeof (Gdk.Pixbuf), typeof (Gdk.Pixbuf), typeof (object), typeof (object), typeof(bool));
tree.Model = store;
tree.Selection.Mode = Gtk.SelectionMode.Multiple;
+ nodeOptions = new Dictionary<Gtk.TreeIter, TreeOptions> (new IterComparer (store));
tree.EnableModelDragDest (target_table, Gdk.DragAction.Copy | Gdk.DragAction.Move);
Gtk.Drag.SourceSet (tree, Gdk.ModifierType.Button1Mask, target_table, Gdk.DragAction.Copy | Gdk.DragAction.Move);
@@ -507,8 +508,8 @@ namespace MonoDevelop.Ide.Gui.Components
foreach (object dataObject in obs)
NotifyNodeRemoved (dataObject, null);
- nodeHash = new Hashtable ();
- nodeOptions = new Hashtable ();
+ nodeHash = new Hashtable ();
+ nodeOptions.Clear ();
store.Clear ();
}
@@ -1198,9 +1199,10 @@ namespace MonoDevelop.Ide.Gui.Components
else if (it is Gtk.TreeIter)
return false; // There is only one node, GetFirstNode returned it
else {
- Gtk.TreeIter[] its = (Gtk.TreeIter[]) it;
- for (int n=0; n<its.Length; n++) {
- if (its [n].Equals (iter)) {
+ Gtk.TreeIter[] its = (Gtk.TreeIter[]) it;
+ Gtk.TreePath iterPath = store.GetPath (iter);
+ for (int n=0; n<its.Length; n++) {
+ if (store.GetPath (its[n]).Equals (iterPath)) {
if (n < its.Length - 1) {
iter = its [n+1];
return true;
@@ -1337,7 +1339,7 @@ namespace MonoDevelop.Ide.Gui.Components
TreeOptions result = null;
Gtk.TreeIter it = iter;
do {
- result = nodeOptions [it] as TreeOptions;
+ nodeOptions.TryGetValue (it, out result);
} while (result == null && store.IterParent (out it, it));
if (result == null)
@@ -1354,18 +1356,18 @@ namespace MonoDevelop.Ide.Gui.Components
internal void ClearOptions (Gtk.TreeIter iter)
{
if (nodeOptions.Count == 0)
- return;
-
- ArrayList toDelete = new ArrayList ();
+ return;
+
+ List<Gtk.TreeIter> toDelete = new List<Gtk.TreeIter> ();
string path = store.GetPath (iter).ToString () + ":";
foreach (Gtk.TreeIter nit in nodeOptions.Keys) {
string npath = store.GetPath (nit).ToString () + ":";
if (npath.StartsWith (path))
toDelete.Add (nit);
- }
-
- foreach (object ob in toDelete)
+ }
+
+ foreach (Gtk.TreeIter ob in toDelete)
nodeOptions.Remove (ob);
}
@@ -1417,12 +1419,22 @@ namespace MonoDevelop.Ide.Gui.Components
internal TreeOptions GetNodeOptions (ITreeNavigator nav)
{
TreeNode node = nav.CurrentPosition._node as TreeNode;
- if (node != null && node.HasIter)
- return nodeOptions [node.NodeIter] as TreeOptions;
+ if (node != null && node.HasIter) {
+ TreeOptions ops;
+ if (nodeOptions.TryGetValue (node.NodeIter, out ops))
+ return ops;
+ else
+ return null;
+ }
else if (node != null)
return null;
- else
- return nodeOptions [nav.CurrentPosition._iter] as TreeOptions;
+ else {
+ TreeOptions ops;
+ if (nodeOptions.TryGetValue (nav.CurrentPosition._iter, out ops))
+ return ops;
+ else
+ return null;
+ }
}
internal bool GetIterFromNamePath (string path, out Gtk.TreeIter iter)
@@ -1811,5 +1823,33 @@ namespace MonoDevelop.Ide.Gui.Components
target.SetCurrentNodes (nodes);
return target;
}
- }
+ }
+
+ class IterComparer: IEqualityComparer<Gtk.TreeIter>
+ {
+ Gtk.TreeStore store;
+
+ public IterComparer (Gtk.TreeStore store)
+ {
+ this.store = store;
+ }
+
+ public bool Equals (Gtk.TreeIter x, Gtk.TreeIter y)
+ {
+ Gtk.TreePath px = store.GetPath (x);
+ Gtk.TreePath py = store.GetPath (y);
+ if (px == null || py == null)
+ return false;
+ return x.Equals (y);
+ }
+
+ public int GetHashCode (Gtk.TreeIter obj)
+ {
+ Gtk.TreePath p = store.GetPath (obj);
+ if (p == null)
+ return 0;
+ else
+ return p.ToString ().GetHashCode ();
+ }
+ }
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TransactedTreeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TransactedTreeBuilder.cs
index d4dfd908ad..8cf04278d9 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TransactedTreeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TransactedTreeBuilder.cs
@@ -405,12 +405,17 @@ namespace MonoDevelop.Ide.Gui.Components
}
bool IsChildIter (Gtk.TreeIter pit, Gtk.TreeIter cit, bool recursive)
- {
- while (tree.Store.IterParent (out cit, cit)) {
- if (cit.Equals (pit)) return true;
- if (!recursive) return false;
- }
- return false;
+ {
+ Gtk.TreePath pitPath = tree.Store.GetPath (pit);
+ Gtk.TreePath citPath = tree.Store.GetPath (cit);
+
+ if (!citPath.Up ())
+ return false;
+
+ if (citPath == pitPath)
+ return true;
+
+ return recursive && pitPath.IsAncestor (citPath);
}
public ITreeNavigator Clone ()
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs
index d2a47765e8..efe60931d6 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/TreeNodeNavigator.cs
@@ -278,11 +278,16 @@ namespace MonoDevelop.Ide.Gui.Components
bool IsChildIter (Gtk.TreeIter pit, Gtk.TreeIter cit, bool recursive)
{
- while (store.IterParent (out cit, cit)) {
- if (cit.Equals (pit)) return true;
- if (!recursive) return false;
- }
- return false;
+ Gtk.TreePath pitPath = tree.Model.GetPath (pit);
+ Gtk.TreePath citPath = tree.Model.GetPath (cit);
+
+ if (!citPath.Up ())
+ return false;
+
+ if (citPath == pitPath)
+ return true;
+
+ return recursive && pitPath.IsAncestor (citPath);
}
public bool MoveToChild (string name, Type dataType)
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/SelectEncodingsDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/SelectEncodingsDialog.cs
index 2dd332cbd9..f0b03b2f5b 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/SelectEncodingsDialog.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/SelectEncodingsDialog.cs
@@ -114,10 +114,11 @@ namespace MonoDevelop.Ide
TreeModel model;
TreeIter iter;
- if (listSelected.Selection.GetSelected (out model, out iter)) {
+ if (listSelected.Selection.GetSelected (out model, out iter)) {
+ TreePath iterPath = storeSelected.GetPath (iter);
TreeIter oldIter;
- if (storeSelected.GetIterFirst (out oldIter)) {
- if (oldIter.Equals (iter))
+ if (storeSelected.GetIterFirst (out oldIter)) {
+ if (storeSelected.GetPath (oldIter).Equals (iterPath))
return;
TreeIter prevIter;
@@ -125,9 +126,9 @@ namespace MonoDevelop.Ide
do {
prevIter = oldIter;
if (!storeSelected.IterNext (ref oldIter))
- return;
- }
- while (!oldIter.Equals (iter));
+ return;
+ }
+ while (!storeSelected.GetPath (oldIter).Equals (iterPath));
storeSelected.Swap (prevIter, iter);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs
index db1bce4181..fc7b2c9cd9 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs
@@ -144,7 +144,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
return;
removedRuntimes.Add (tr);
}
- if (it.Equals (defaultIter)) {
+ if (store.GetPath (it).Equals (store.GetPath (defaultIter))) {
defaultIter = runningIter;
UpdateRow (defaultIter);
}
@@ -171,7 +171,7 @@ namespace MonoDevelop.Ide.Gui.OptionPanels
text = ((MonoRuntimeInfo)ob).DisplayName;
else
text = ((TargetRuntime)ob).DisplayName;
- if (it.Equals (defaultIter))
+ if (store.GetPath (it).Equals (store.GetPath (defaultIter)))
text = "<b>" + text + " (Default)</b>";
store.SetValue (it, 0, text);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
index e2424633b3..3eeeeb7135 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
@@ -743,17 +743,20 @@ namespace MonoDevelop.Ide.Gui.Pads
public virtual bool GetPreviousLocation (out string file, out int line, out int column)
{
- bool hasNext, hasSel;
+ bool hasNext;
TreeIter iter;
TreeIter selIter = TreeIter.Zero;
- TreeIter prevIter = TreeIter.Zero;
-
- hasSel = !initializeLocation && view.Selection.GetSelected (out selIter);
+ TreeIter prevIter = TreeIter.Zero;
+
+ TreePath selPath = null;
+ if (!initializeLocation && view.Selection.GetSelected (out selIter))
+ selPath = store.GetPath (selIter);
+
hasNext = view.Model.GetIterFirst (out iter);
initializeLocation = false;
- while (hasNext) {
- if (hasSel && iter.Equals (selIter))
+ while (hasNext) {
+ if (selPath != null && store.GetPath (iter).Equals (selPath))
break;
prevIter = iter;
hasNext = view.Model.IterNext (ref iter);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/MonodocTreePad.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/MonodocTreePad.cs
index 90830bc758..1b668c910c 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/MonodocTreePad.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/MonodocTreePad.cs
@@ -108,7 +108,7 @@ namespace MonoDevelop.Ide.Gui.Pads
if (tree_view.Selection.GetSelected (out model, out iter)) {
- if (iter.Equals (root_iter)) return;
+ if (store.GetPath (iter).Equals (store.GetPath (root_iter))) return;
Node n = (Node)store.GetValue (iter, 1);
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskService.cs
index b5fb3e1484..a8ce033094 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskService.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/TaskService.cs
@@ -227,9 +227,8 @@ namespace MonoDevelop.Ide.Tasks
[AsyncDispatch]
void OnCommentTasksChanged (object sender, CommentTasksChangedEventArgs e)
{
- Project p = IdeApp.Workspace.GetProjectContainingFile (e.FileName);
- if (p != null)
- UpdateCommentTags (p.ParentSolution, e.FileName, e.TagComments);
+ if (e.Project != null)
+ UpdateCommentTags (e.Project.ParentSolution, e.FileName, e.TagComments);
}
public void ClearExceptCommentTasks ()