2007-04-02 Carlos Alberto Cortez <calberto.cortez@gmail.com>
authorCarlos Alberto Cortez <calberto.cortez@gmail.com>
Mon, 2 Apr 2007 19:20:34 +0000 (19:20 -0000)
committerCarlos Alberto Cortez <calberto.cortez@gmail.com>
Mon, 2 Apr 2007 19:20:34 +0000 (19:20 -0000)
* ListView.cs: Add a hover_pending field in ListView
to fire just one OnMouseHover event for each MouseEnter/MouseLeave
cycle (we are resetting the MouseHover logic in XplatUI
to handle HoverSelection). Fixes #80429.

svn path=/trunk/mcs/; revision=75298

mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs

index 3f5b3f34493a02cf8dbadee0adf0155f595324c4..3230cbe04191cb7385390372fff8a4a295610414 100644 (file)
@@ -1,3 +1,10 @@
+2007-04-02  Carlos Alberto Cortez <calberto.cortez@gmail.com>
+
+       * ListView.cs: Add a hover_pending field in ListView
+       to fire just one OnMouseHover event for each MouseEnter/MouseLeave
+       cycle (we are resetting the MouseHover logic in XplatUI
+       to handle HoverSelection). Fixes #80429.
+
 2007-04-02  Jackson Harper  <jackson@ximian.com>
 
        * TextControl.cs: Make sure the attributes get set on the last
index d14c57381cf57c3caa090d2be8598a34d8d96410..c6bfbb6ead79683bb983d196b24b67ec8885fad9 100644 (file)
@@ -79,6 +79,7 @@ namespace System.Windows.Forms
                private bool label_wrap = true;
                private bool multiselect = true;
                private bool scrollable = true;
+               private bool hover_pending;
                private readonly SelectedIndexCollection selected_indices;
                private readonly SelectedListViewItemCollection selected_items;
                private SortOrder sort_order = SortOrder.None;
@@ -249,6 +250,7 @@ namespace System.Windows.Forms
                        GotFocus += new EventHandler (FocusChanged);
                        LostFocus += new EventHandler (FocusChanged);
                        MouseWheel += new MouseEventHandler(ListView_MouseWheel);
+                       MouseEnter += new EventHandler (ListView_MouseEnter);
 
                        this.SetStyle (ControlStyles.UserPaint | ControlStyles.StandardClick
 #if NET_2_0
@@ -2000,7 +2002,10 @@ namespace System.Windows.Forms
 
                        private void ItemsMouseHover (object sender, EventArgs e)
                        {
-                               owner.OnMouseHover(e);
+                               if (owner.hover_pending) {
+                                       owner.OnMouseHover (e);
+                                       owner.hover_pending = false;
+                               }
 
                                if (Capture || !owner.HoverSelection)
                                        return;
@@ -2397,6 +2402,11 @@ namespace System.Windows.Forms
                        item_control.Invalidate (FocusedItem.Bounds);
                }
 
+               void ListView_MouseEnter (object o, EventArgs args)
+               {
+                       hover_pending = true; // Need a hover event for every Enter/Leave cycle
+               }
+
                private void ListView_MouseWheel (object sender, MouseEventArgs me)
                {
                        if (Items.Count == 0)