Author: gert
Date: 2007-02-23 14:49:03 -0500 (Fri, 23 Feb 2007)
New Revision: 73377

Modified:
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs
   trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListViewItem.cs
Log:
* ListViewItem.cs: Cancel label edit when item is removed from
ListView.
* ListView.cs: Move setting of focus to EndEdit. Fire BeforeLabelEdit
event before the edit textbox is displayed.  Added CancelEdit method
which is used end to editing while ignoring the value set by the
user. In EndEdit, set focus to ListView to avoid losing focus to
other controls. In ListViewItemCollection.Clear, cancel editing of
any of the items.  In Remove, cancel editing of item being removed.
Avoid udplicate code by modifing RemoveAt to invoke Remove.


Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-02-23 18:59:54 UTC (rev 73376)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog        
2007-02-23 19:49:03 UTC (rev 73377)
@@ -1,5 +1,17 @@
 2007-02-23  Gert Driesen  <[EMAIL PROTECTED]>
 
+       * ListViewItem.cs: Cancel label edit when item is removed from 
+       ListView.
+       * ListView.cs: Move setting of focus to EndEdit. Fire BeforeLabelEdit
+       event before the edit textbox is displayed.  Added CancelEdit method
+       which is used end to editing while ignoring the value set by the
+       user. In EndEdit, set focus to ListView to avoid losing focus to
+       other controls. In ListViewItemCollection.Clear, cancel editing of
+       any of the items.  In Remove, cancel editing of item being removed.
+       Avoid udplicate code by modifing RemoveAt to invoke Remove.
+
+2007-02-23  Gert Driesen  <[EMAIL PROTECTED]>
+
        * FileDialog.cs: Update FSEntry when move is successful. Fixes
        bug #80948.  
 

Modified: trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs      
2007-02-23 18:59:54 UTC (rev 73376)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs      
2007-02-23 19:49:03 UTC (rev 73377)
@@ -1795,14 +1795,12 @@
                        private void LabelEditFinished (object sender, 
EventArgs e)
                        {
                                EndEdit (edit_item);
-                               owner.Focus ();
                        }
 
                        private void LabelEditCancelled (object sender, 
EventArgs e)
                        {
                                edit_args.SetLabel (null);
                                EndEdit (edit_item);
-                               owner.Focus ();
                        }
 
                        private void LabelTextChanged (object sender, EventArgs 
e)
@@ -1853,23 +1851,32 @@
                                                edit_text_box.Multiline = true;
                                                break;
                                }
-                               
+
+                               edit_item = item;
+                               edit_args = new LabelEditEventArgs 
(owner.Items.IndexOf (edit_item));
+                               owner.OnBeforeLabelEdit (edit_args);
+
                                edit_text_box.Text = item.Text;
                                edit_text_box.Font = item.Font;
                                edit_text_box.Visible = true;
                                edit_text_box.Focus ();
                                edit_text_box.SelectAll ();
 
-                               edit_item = item;
-                               edit_args = new LabelEditEventArgs 
(owner.Items.IndexOf(edit_item));
-                               owner.OnBeforeLabelEdit (edit_args);
-
-                               if (edit_args.CancelEdit) {
+                               if (edit_args.CancelEdit)
                                        EndEdit (item);
-                                       owner.Focus ();
-                               }
                        }
 
+                       internal void CancelEdit (ListViewItem item)
+                       {
+                               // do nothing if there's no item being edited, 
or if the
+                               // item being edited is not the one passed in
+                               if (edit_item == null || edit_item != item)
+                                       return;
+
+                               edit_args.SetLabel (null);
+                               EndEdit (item);
+                       }
+
                        internal void EndEdit (ListViewItem item)
                        {
                                // do nothing if there's no item being edited, 
or if the
@@ -1881,8 +1888,12 @@
                                if (!edit_args.CancelEdit && edit_args.Label != 
null)
                                        edit_item.Text = edit_text_box.Text;
 
-                               if (edit_text_box != null && 
edit_text_box.Visible)
-                                       edit_text_box.Visible = false;
+                               if (edit_text_box != null) {
+                                       if (edit_text_box.Visible)
+                                               edit_text_box.Visible = false;
+                                       // ensure listview gets focus
+                                       owner.Focus ();
+                               }
 
                                edit_item = null;
                        }
@@ -3550,6 +3561,8 @@
                        {
                                owner.SetFocusedItem (null);
                                owner.h_scroll.Value = owner.v_scroll.Value = 0;
+                               foreach (ListViewItem item in list)
+                                       owner.item_control.CancelEdit (item);
                                list.Clear ();
                                OnChange ();
                                owner.Redraw (true);
@@ -3711,6 +3724,7 @@
                                bool selection_changed = 
owner.SelectedItems.Contains (item);
                                list.Remove (item);
                                OnChange ();
+                               owner.item_control.CancelEdit (item);
                                owner.Redraw (true);
                                if (selection_changed)
                                        owner.OnSelectedIndexChanged 
(EventArgs.Empty);
@@ -3720,12 +3734,8 @@
                        {
                                if (index < 0 || index >= Count)
                                        throw new ArgumentOutOfRangeException 
("index");
-                               bool selection_changed = 
owner.SelectedIndices.Contains (index);
-                               list.RemoveAt (index);
-                               OnChange ();
-                               owner.Redraw (false);
-                               if (selection_changed)
-                                       owner.OnSelectedIndexChanged 
(EventArgs.Empty);
+                               ListViewItem item = (ListViewItem) list [index];
+                               Remove (item);
                        }
 
 #if NET_2_0

Modified: 
trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListViewItem.cs
===================================================================
--- trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListViewItem.cs  
2007-02-23 18:59:54 UTC (rev 73376)
+++ trunk/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListViewItem.cs  
2007-02-23 19:49:03 UTC (rev 73377)
@@ -24,8 +24,6 @@
 //      Mike Kestner <[EMAIL PROTECTED]>
 //      Daniel Nauck (dna(at)mono-project(dot)de)
 
-
-
 using System.Collections;
 using System.ComponentModel;
 using System.Drawing;
@@ -603,8 +601,11 @@
 
                public virtual void Remove ()
                {
-                       if (owner != null)
-                               owner.Items.Remove (this);
+                       if (owner == null)
+                               return;
+
+                       owner.item_control.CancelEdit (this);
+                       owner.Items.Remove (this);
                        owner = null;
                }
 

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

Reply via email to