Author: jackson
Date: 2006-07-15 00:52:36 -0400 (Sat, 15 Jul 2006)
New Revision: 62630

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
Log:

        * TreeNode.cs:
        * TreeView.cs: Make the editing work similar to MSs, firing the
        events correctly and ending edits correctly.



Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2006-07-15 04:06:53 UTC (rev 62629)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2006-07-15 04:52:36 UTC (rev 62630)
@@ -1,3 +1,9 @@
+2006-07-14  Jackson Harper  <[EMAIL PROTECTED]>
+
+       * TreeNode.cs:
+       * TreeView.cs: Make the editing work similar to MSs, firing the
+       events correctly and ending edits correctly.
+
 2006-07-14  Mike Kestner  <[EMAIL PROTECTED]>
 
        * ToolBarButton.cs:

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs      
2006-07-15 04:06:53 UTC (rev 62629)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeNode.cs      
2006-07-15 04:52:36 UTC (rev 62630)
@@ -48,7 +48,6 @@
                
                internal bool is_expanded = false;
                private bool check;
-               private bool is_editing;
                internal OwnerDrawPropertyBag prop_bag;
 
                private object tag;
@@ -308,7 +307,12 @@
                }
 
                public bool IsEditing {
-                       get { return is_editing; }
+                       get {
+                               TreeView tv = TreeView;
+                               if (tv == null)
+                                       return false;
+                               return tv.edit_node == this;
+                       }
                }
 
                public bool IsExpanded {
@@ -497,10 +501,9 @@
 
                #region Public Instance Methods
                public void BeginEdit () {
-                       is_editing = true;
                        TreeView tv = TreeView;
                        if (tv != null)
-                               tv.edit_node = this;
+                               tv.BeginEdit (this);
                }
 
                public void Collapse () {
@@ -508,9 +511,9 @@
                }
 
                public void EndEdit (bool cancel) {
-                       is_editing = false;
-                       if (!cancel && TreeView != null)
-                               Text = TreeView.LabelEditText;
+                       TreeView tv = TreeView;
+                       if (!cancel && tv != null)
+                               tv.EndEdit (this);
                }
 
                public void Expand () {

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs      
2006-07-15 04:06:53 UTC (rev 62629)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/TreeView.cs      
2006-07-15 04:52:36 UTC (rev 62630)
@@ -57,6 +57,7 @@
                private bool hot_tracking;
                private int indent = 19;
 
+               private NodeLabelEditEventArgs edit_args;
                private TextBox edit_text_box;
                internal TreeNode edit_node;
                
@@ -544,8 +545,8 @@
                        return node.prop_bag;
                }
 
-               protected override bool IsInputKey (Keys key_data) {
-
+               protected override bool IsInputKey (Keys key_data)
+               {
                        if ((key_data & Keys.Alt) == 0) {
                                switch (key_data & Keys.KeyCode) {
                                case Keys.Enter:
@@ -758,14 +759,6 @@
                #endregion      // Protected Instance Methods
 
                #region Internal & Private Methods and Properties
-               internal string LabelEditText {
-                       get {
-                               if (edit_text_box == null)
-                                       return String.Empty;
-                               return edit_text_box.Text;
-                       }
-               }
-
                internal IntPtr CreateNodeHandle ()
                {
                        return (IntPtr) handle_count++;
@@ -1145,10 +1138,22 @@
                        }
                }
 
-               private void DrawEditNode (TreeNode node)
+               private void EditTextBoxKeyDown (object sender, KeyEventArgs e)
                {
-                       SuspendLayout ();
+                       if (e.KeyCode == Keys.Return)
+                               edit_text_box.Visible = false;
+               }
 
+               private void EditTextBoxLostFocus (object sender, EventArgs e)
+               {
+                       EndEdit (edit_node);
+               }
+
+               internal void BeginEdit (TreeNode node)
+               {
+                       if (edit_node != null)
+                               EndEdit (edit_node);
+
                        if (edit_text_box == null) {
                                edit_text_box = new FixedSizeTextBox ();
                                edit_text_box.BorderStyle = 
BorderStyle.FixedSingle;
@@ -1165,33 +1170,36 @@
                        edit_text_box.Focus ();
                        edit_text_box.SelectAll ();
 
-                       ResumeLayout ();
+                       edit_args = new NodeLabelEditEventArgs (edit_node);
+                       OnBeforeLabelEdit (edit_args);
+
+                       if (edit_args.CancelEdit)
+                               EndEdit (node);
+                       
+                       edit_node = node;
                }
 
-               private void EditTextBoxKeyDown (object sender, KeyEventArgs e)
+               internal void EndEdit (TreeNode node)
                {
-                       if (e.KeyCode == Keys.Return)
+                       if (edit_text_box != null && edit_text_box.Visible) {
                                edit_text_box.Visible = false;
-               }
+                       }
 
-               private void EditTextBoxLostFocus (object sender, EventArgs e)
-               {
-                       EndEdit ();
-               }
+                       if (edit_node != null && edit_node == node) {
+                               OnAfterLabelEdit (edit_args);
 
-               private void EndEdit ()
-               {
-                       if (edit_text_box != null)
-                               edit_text_box.Visible = false;
+                               if (!edit_args.CancelEdit) {
+                                       if (edit_args.Label != null)
+                                               edit_node.Text = 
edit_args.Label;
+                                       else
+                                               edit_node.Text = 
edit_text_box.Text;
+                               }
 
-                       if (edit_node != null) {
-                               NodeLabelEditEventArgs e = new 
NodeLabelEditEventArgs (edit_node, edit_text_box.Text);
-                               OnAfterLabelEdit (e);
+                       }
 
-                               edit_node.EndEdit (e.CancelEdit);
-                               UpdateNode (edit_node);
-                               edit_node = null;
-                       }
+                       
+                       edit_node = null;
+                       UpdateNode (node);
                }
 
                internal int GetNodeWidth (TreeNode node)
@@ -1252,9 +1260,7 @@
                        if (ImageList != null)
                                 DrawNodeImage (node, dc, clip, node.GetImageX 
(), y);
 
-                       if (node.IsEditing)
-                               DrawEditNode (node);
-                       else
+                       if (!node.IsEditing)
                                DrawStaticNode (node, dc);
                }
 
@@ -1362,8 +1368,8 @@
 
                private void VScrollBarValueChanged (object sender, EventArgs e)
                {
-                       if (edit_node != null)
-                               EndEdit ();
+                       EndEdit (edit_node);
+
                        SetVScrollPos (vbar.Value, null);
                }
 
@@ -1403,8 +1409,7 @@
 
                private void HScrollBarValueChanged(object sender, EventArgs e)
                {
-                       if (edit_node != null)
-                               EndEdit ();
+                       EndEdit (edit_node);
 
                        int old_offset = hbar_offset;
                        hbar_offset = hbar.Value;
@@ -1513,9 +1518,7 @@
                                TreeNode old_selected = selected_node;
                                SelectedNode = node;
                                if (label_edit && e.Clicks == 1 && 
selected_node == old_selected) {
-                                       if (edit_node != null)
-                                               EndEdit ();
-                                       node.BeginEdit ();
+                                       BeginEdit (node);
                                } else if (selected_node != focused_node) {
                                        select_mmove = true;
                                }

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to