Skip to content

Commit 56c1099

Browse files
committed
Fixed class allowing same name twice.
1 parent 852a43d commit 56c1099

File tree

3 files changed

+36
-13
lines changed

3 files changed

+36
-13
lines changed

Nodes/BaseNode.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public abstract class BaseNode
2828
private string comment;
2929

3030
/// <summary>Gets or sets the name of the node. If a new name was set the property changed event gets fired.</summary>
31-
public string Name { get { return name; } set { if (value != null && name != value) { name = value; NameChanged?.Invoke(this); } } }
31+
public virtual string Name { get { return name; } set { if (value != null && name != value) { name = value; NameChanged?.Invoke(this); } } }
3232

3333
/// <summary>Gets or sets the offset of the node.</summary>
3434
public IntPtr Offset { get; set; }

Nodes/ClassNode.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,22 @@ public class ClassNode : BaseContainerNode
1414
/// <summary>Size of the node in bytes.</summary>
1515
public override int MemorySize => Nodes.Sum(n => n.MemorySize);
1616

17+
public override string Name
18+
{
19+
get { return base.Name; }
20+
set
21+
{
22+
if (!ClassManager.Classes.Any(c => c.Name == value))
23+
{
24+
base.Name = value;
25+
}
26+
else
27+
{
28+
Program.Logger.Log(Logger.LogLevel.Warning, $"The class name {value} is already in use.");
29+
}
30+
}
31+
}
32+
1733
public IntPtr Address
1834
{
1935
set

UI/ClassNodeView.cs

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -158,18 +158,6 @@ public ClassNodeView()
158158

159159
#region Event Handler
160160

161-
private void classesTreeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
162-
{
163-
if (!string.IsNullOrEmpty(e.Label))
164-
{
165-
var node = e.Node as ClassTreeNode;
166-
if (node != null)
167-
{
168-
node.ClassNode.Name = e.Label;
169-
}
170-
}
171-
}
172-
173161
private void classesTreeView_AfterSelect(object sender, TreeViewEventArgs e)
174162
{
175163
if (e.Node.Level == 0)
@@ -241,6 +229,25 @@ private void renameClassToolStripMenuItem_Click(object sender, EventArgs e)
241229
}
242230
}
243231

232+
private void classesTreeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
233+
{
234+
if (!string.IsNullOrEmpty(e.Label))
235+
{
236+
var node = e.Node as ClassTreeNode;
237+
if (node != null)
238+
{
239+
node.ClassNode.Name = e.Label;
240+
241+
// Cancel the edit if the class refused the name.
242+
// This prevents the tree node from using the wrong name.
243+
if (node.ClassNode.Name != e.Label)
244+
{
245+
e.CancelEdit = true;
246+
}
247+
}
248+
}
249+
}
250+
244251
private void autoExpandHierarchyViewToolStripMenuItem_Click(object sender, EventArgs e)
245252
{
246253
autoExpandHierarchyViewToolStripMenuItem.Checked = !autoExpandHierarchyViewToolStripMenuItem.Checked;

0 commit comments

Comments
 (0)