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:
authorAlan McGovern <alan.mcgovern@gmail.com>2011-10-19 13:47:59 +0400
committerAlan McGovern <alan.mcgovern@gmail.com>2011-10-19 14:35:56 +0400
commite743d70ee1b25ea58865bd356a1c827913b8bfd1 (patch)
treea9a97cb0c7e8a30869bdc3f830b24fa6c339d2dc /main/src/addins
parent0b9bf74a3e2f7466120253c724085a4e70a9c1a4 (diff)
[MacDev] Set and unset PObject.Parent appropriately
Ensure we clear the parent when the object is removed.
Diffstat (limited to 'main/src/addins')
-rw-r--r--main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs14
-rw-r--r--main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/PListObject.cs25
2 files changed, 20 insertions, 19 deletions
diff --git a/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs b/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs
index c93e95c4a0..5cef2a7115 100644
--- a/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs
+++ b/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs
@@ -276,12 +276,7 @@ namespace MonoDevelop.MacDev.PlistEditor
var key = scheme.Keys.FirstOrDefault (k => k.Identifier == args.NewText || k.Description == args.NewText);
var newKey = key != null ? key.Identifier : args.NewText;
- if (!dict.ChangeKey (obj, newKey))
- return;
-
- treeStore.SetValue (selIter, 0, newKey);
- if (key != null)
- obj.Replace (CreateNewObject (key.Type));
+ dict.ChangeKey (obj, newKey, key == null || obj.TypeString == key.Type ? null : CreateNewObject (key.Type));
};
var col = new TreeViewColumn ();
col.Resizable = true;
@@ -387,11 +382,8 @@ namespace MonoDevelop.MacDev.PlistEditor
return;
PObject oldObj = (PObject)treeStore.GetValue (selIter, 1);
- if (oldObj == null)
- return;
- var newObj = CreateNewObject (args.NewText);
-
- oldObj.Replace (newObj);
+ if (oldObj != null && oldObj.TypeString != args.NewText)
+ oldObj.Replace (CreateNewObject (args.NewText));
};
treeview1.AppendColumn (GettextCatalog.GetString ("Type"), comboRenderer, delegate(TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter) {
diff --git a/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/PListObject.cs b/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/PListObject.cs
index 2b27f40b46..6c81aeab13 100644
--- a/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/PListObject.cs
+++ b/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/PListObject.cs
@@ -59,7 +59,7 @@ namespace MonoDevelop.MacDev.PlistEditor
return parent;
}
set {
- if (parent != null)
+ if (parent != null && value != null)
throw new NotSupportedException ("Already parented.");
this.parent = value;
}
@@ -250,7 +250,6 @@ namespace MonoDevelop.MacDev.PlistEditor
order.Add (key);
dict[key] = value;
- value.Parent = this;
if (exists)
OnRemoved (new PObjectEventArgs (existing));
@@ -262,6 +261,7 @@ namespace MonoDevelop.MacDev.PlistEditor
protected virtual void OnAdded (PObjectEventArgs e)
{
+ e.PObject.Parent = this;
var handler = this.Added;
if (handler != null)
handler (this, e);
@@ -272,7 +272,6 @@ namespace MonoDevelop.MacDev.PlistEditor
{
dict.Add (key, value);
order.Add (key);
- value.Parent = this;
OnAdded (new PObjectEventArgs (value));
}
@@ -280,7 +279,6 @@ namespace MonoDevelop.MacDev.PlistEditor
{
dict.Add (key, value);
order.Insert (order.IndexOf (keyBefore) + 1, key);
- value.Parent = this;
OnAdded (new PObjectEventArgs (value));
}
@@ -320,6 +318,7 @@ namespace MonoDevelop.MacDev.PlistEditor
protected virtual void OnRemoved (PObjectEventArgs e)
{
+ e.PObject.Parent = null;
var handler = this.Removed;
if (handler != null)
handler (this, e);
@@ -340,14 +339,24 @@ namespace MonoDevelop.MacDev.PlistEditor
public bool ChangeKey (PObject obj, string newKey)
{
+ return ChangeKey (obj, newKey, null);
+ }
+
+ public bool ChangeKey (PObject obj, string newKey, PObject newValue)
+ {
var oldkey = GetKey (obj);
if (oldkey == null || dict.ContainsKey (newKey))
return false;
dict.Remove (oldkey);
- dict.Add (newKey, obj);
+ dict.Add (newKey, newValue ?? obj);
order[order.IndexOf (oldkey)] = newKey;
- OnChanged (EventArgs.Empty);
+ if (newValue != null) {
+ OnRemoved (new PObjectEventArgs (obj));
+ OnAdded (new PObjectEventArgs (newValue));
+ } else {
+ OnChanged (EventArgs.Empty);
+ }
return true;
}
@@ -567,6 +576,7 @@ namespace MonoDevelop.MacDev.PlistEditor
protected virtual void OnAdded (PObjectEventArgs e)
{
+ e.PObject.Parent = this;
if (SuppressChangeEvents)
return;
@@ -611,7 +621,6 @@ namespace MonoDevelop.MacDev.PlistEditor
public void Add (PObject obj)
{
- obj.Parent = this;
list.Add (obj);
OnAdded (new PObjectEventArgs (obj));
}
@@ -620,7 +629,6 @@ namespace MonoDevelop.MacDev.PlistEditor
{
for (int i = 0; i < Count; i++) {
if (list[i] == oldObj) {
- newObject.Parent = this;
list[i] = newObject;
OnRemoved (new PObjectEventArgs (oldObj));
OnAdded (new PObjectEventArgs (newObject));
@@ -633,6 +641,7 @@ namespace MonoDevelop.MacDev.PlistEditor
protected virtual void OnRemoved (PObjectEventArgs e)
{
+ e.PObject.Parent = null;
if (SuppressChangeEvents)
return;