From 60f43770b965b1cdc1ecc06b65c9fe789cb58772 Mon Sep 17 00:00:00 2001 From: Carlos Alberto Cortez Date: Wed, 4 Apr 2007 22:47:52 +0000 Subject: [PATCH] 2007-04-04 Carlos Alberto Cortez * ListView.cs: We don't need the MouseEnter/MouseLeave check to fire just one MouseHover event when HoverSelection is true, since .Net does fire more than one MouseHover event in that scenario. Also, fix the selection in HoverSelection, by invoking UpdateMultiSelect if MultiSelect is true, instead of only setting ListViewItem.Selected. Finally, we need to reset the Hover logic in MouseMove, even when we don't have a selected item. svn path=/trunk/mcs/; revision=75410 --- .../System.Windows.Forms/ChangeLog | 10 +++++++++ .../System.Windows.Forms/ListView.cs | 22 ++++++++----------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog index 125edd39b62..f1de38e0897 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ChangeLog @@ -1,3 +1,13 @@ +2007-04-04 Carlos Alberto Cortez + + * ListView.cs: We don't need the MouseEnter/MouseLeave check + to fire just one MouseHover event when HoverSelection is true, since + .Net does fire more than one MouseHover event in that scenario. Also, + fix the selection in HoverSelection, by invoking UpdateMultiSelect + if MultiSelect is true, instead of only setting ListViewItem.Selected. + Finally, we need to reset the Hover logic in MouseMove, even when we + don't have a selected item. + 2007-04-04 Jonathan Pobst * ToolStrip.cs: Add several missing methods, properties, and events. diff --git a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs index c6bfbb6ead7..3e8d5ab9efd 100644 --- a/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs +++ b/mcs/class/Managed.Windows.Forms/System.Windows.Forms/ListView.cs @@ -79,7 +79,6 @@ 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; @@ -250,7 +249,6 @@ 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 @@ -1990,7 +1988,7 @@ namespace System.Windows.Forms Point pt = PointToClient (Control.MousePosition); ListViewItem item = owner.GetItemAt (pt.X, pt.Y); - if (item != null && !item.Selected) { + if (item != null) { hover_processed = false; XplatUI.ResetMouseHover (Handle); } @@ -2002,10 +2000,7 @@ namespace System.Windows.Forms private void ItemsMouseHover (object sender, EventArgs e) { - if (owner.hover_pending) { - owner.OnMouseHover (e); - owner.hover_pending = false; - } + owner.OnMouseHover (e); if (Capture || !owner.HoverSelection) return; @@ -2017,7 +2012,13 @@ namespace System.Windows.Forms if (item == null) return; - item.Selected = true; + if (owner.MultiSelect) + owner.UpdateMultiSelection (item.Index, true); + else + item.Selected = true; + + owner.SetFocusedItem (item); + Select (); // Make sure we have the focus, since MouseHover doesn't give it to us } private void ItemsMouseUp (object sender, MouseEventArgs me) @@ -2402,11 +2403,6 @@ 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) -- 2.25.1