From bfcbe25a72a366a494b4de84b1f5a7ee3a056def Mon Sep 17 00:00:00 2001 From: Itar Bar-Haim Date: Wed, 4 Apr 2007 13:41:01 +0000 Subject: [PATCH] A crash fix when double-clicking the empty place where the "Add Member" row should have appeared; A fix so that row is no longer empty. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2468 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../ClassDiagram/ClassEditor/ClassEditor.cs | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs b/src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs index 457b0af860..1726fc247b 100644 --- a/src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs +++ b/src/AddIns/DisplayBindings/ClassDiagram/ClassEditor/ClassEditor.cs @@ -237,6 +237,15 @@ namespace ClassDiagram } } + private class AddMemberNode : Node + { + public AddMemberNode (string str) : base (str) {} + + public string MemberName { + get { return base.Text; } + } + } + private class AddParameterNode : Node { public AddParameterNode (Image icon) : base ("") @@ -410,12 +419,12 @@ namespace ClassDiagram { string str = ""; - if (memberType == typeof(IMethod)) str = ""; - else if (memberType == typeof(IEvent)) str = ""; - else if (memberType == typeof(IProperty)) str = ""; - else if (memberType == typeof(IField)) str = ""; + if (memberType == typeof(IMethod)) str = ""; + else if (memberType == typeof(IEvent)) str = ""; + else if (memberType == typeof(IProperty)) str = ""; + else if (memberType == typeof(IField)) str = ""; - Node addNewMember = new Node(str); // TODO set color + AddMemberNode addNewMember = new AddMemberNode(str); // TODO set color //addNewMember.ForeColor = SystemColors.GrayText; group.Nodes.Add(addNewMember); addMemberItems[memberType] = addNewMember; @@ -540,8 +549,11 @@ namespace ClassDiagram if (item == null) return; MemberNode memberItem = item as MemberNode; + ParameterNode paramItem = item as ParameterNode; + AddMemberNode addMemberItem = item as AddMemberNode; + AddParameterNode addParamItem = item as AddParameterNode; - if (memberItem != null && addMemberItems.ContainsValue(memberItem)) + if (addMemberItem != null)// && addMemberItems.ContainsValue(memberItem)) { /* IAmbience ambience = GetAmbience(); item.SubItems.Add(ambience.Convert(VoidReturnType.Instance)); @@ -550,23 +562,24 @@ namespace ClassDiagram item.Text = "[method name]"; item.BeginEdit(0);*/ } - else if (addParameterItems.ContainsValue(item)) + else if (addParamItem != null) //addParameterItems.ContainsValue(item)) { } - else + else if (memberItem != null) { - ParameterNode paramItem = item as ParameterNode; - if (paramItem != null && paramItem.Parameter != null && paramItem.Method != null) - ParameterActivated(this, new IParameterEventArgs(paramItem.Method, paramItem.Parameter)); - else MemberActivated(this, new IMemberEventArgs(memberItem.Member)); } + else if (paramItem != null) + { + if (paramItem.Parameter != null && paramItem.Method != null) + ParameterActivated(this, new IParameterEventArgs(paramItem.Method, paramItem.Parameter)); + } } void _nameDrawText(object sender, DrawEventArgs e) { - if ((e.Node.Tag is GroupNode || e.Node.Tag is AddParameterNode) && e.Node.IsSelected == false) + if ((e.Node.Tag is GroupNode || e.Node.Tag is AddParameterNode || e.Node.Tag is AddMemberNode) && e.Node.IsSelected == false) e.TextBrush = Brushes.Gray; } }