瀏覽代碼

View.Mouse cleanup - WIP3

Tig 9 月之前
父節點
當前提交
1abe3182b6

+ 2 - 2
Terminal.Gui/Input/MouseEventEventArgs.cs

@@ -5,11 +5,11 @@
 ///     the wrapped <see cref="MouseEvent"/> class and is used for the events defined on <see cref="View"/> and subclasses
 ///     of View (e.g. <see cref="View.MouseEnter"/> and <see cref="View.MouseClick"/>).
 /// </summary>
-public class MouseEventEventArgs : EventArgs
+public class MouseEventArgs : EventArgs
 {
     /// <summary>Constructs.</summary>
     /// <param name="me">The mouse event.</param>
-    public MouseEventEventArgs (MouseEvent me) { MouseEvent = me; }
+    public MouseEventArgs (MouseEvent me) { MouseEvent = me; }
 
     /// <summary>
     ///     Indicates if the current mouse event has already been processed and the driver should stop notifying any other

+ 0 - 5
Terminal.Gui/View/Adornment/Border.cs

@@ -264,11 +264,6 @@ public class Border : Adornment
     /// <inheritdoc/>
     protected override bool OnMouseEvent (MouseEvent mouseEvent)
     {
-        if (base.RaiseMouseEvent (mouseEvent))
-        {
-            return true;
-        }
-
         // BUGBUG: See https://github.com/gui-cs/Terminal.Gui/issues/3312
         if (!_dragPosition.HasValue && mouseEvent.Flags.HasFlag (MouseFlags.Button1Pressed)
                                     // HACK: Prevents Window from being draggable if it's Top

+ 6 - 10
Terminal.Gui/View/View.Mouse.cs

@@ -245,15 +245,11 @@ public partial class View // Mouse APIs
         }
 
         // Cancellable event
-        if (RaiseMouseEvent (mouseEvent))
+        if (RaiseMouseEvent (mouseEvent) || mouseEvent.Handled)
         {
-            // Technically mouseEvent.Handled should already be true if implementers of OnMouseEvent
-            // follow the rules. But we'll update it just in case.
-            return mouseEvent.Handled = true;
+            return true;
         }
 
-        // BUGBUG: MouseEvent should be fired from here. Fix this in https://github.com/gui-cs/Terminal.Gui/issues/3029
-
         // Post-Conditions
         if (HighlightStyle != HighlightStyle.None || (WantContinuousButtonPressed && WantMousePositionReports))
         {
@@ -303,7 +299,7 @@ public partial class View // Mouse APIs
     /// <returns><see langword="true"/>, if the event was handled, <see langword="false"/> otherwise.</returns>
     public bool RaiseMouseEvent (MouseEvent mouseEvent)
     {
-        var args = new MouseEventEventArgs (mouseEvent);
+        var args = new MouseEventArgs (mouseEvent);
 
         if (OnMouseEvent (mouseEvent) || mouseEvent.Handled == true)
         {
@@ -334,7 +330,7 @@ public partial class View // Mouse APIs
     ///         The coordinates are relative to <see cref="View.Viewport"/>.
     ///     </para>
     /// </remarks>
-    public event EventHandler<MouseEventEventArgs>? MouseEvent;
+    public event EventHandler<MouseEventArgs>? MouseEvent;
 
     #endregion Low Level Mouse Events
 
@@ -351,7 +347,7 @@ public partial class View // Mouse APIs
     ///         The coordinates are relative to <see cref="View.Viewport"/>.
     ///     </para>
     /// </remarks>
-    public event EventHandler<MouseEventEventArgs>? MouseClick;
+    public event EventHandler<MouseEventArgs>? MouseClick;
 
     /// <summary>Invokes the MouseClick event.</summary>
     /// <remarks>
@@ -361,7 +357,7 @@ public partial class View // Mouse APIs
     ///     </para>
     /// </remarks>
     /// <returns><see langword="true"/>, if the event was handled, <see langword="false"/> otherwise.</returns>
-    protected bool OnMouseClick (MouseEventEventArgs args)
+    protected bool OnMouseClick (MouseEventArgs args)
     {
         // BUGBUG: This should be named NewMouseClickEvent. Fix this in https://github.com/gui-cs/Terminal.Gui/issues/3029
 

+ 1 - 1
Terminal.Gui/Views/Bar.cs

@@ -45,7 +45,7 @@ public class Bar : View, IOrientation, IDesignable
         }
     }
 
-    private void OnMouseEvent (object? sender, MouseEventEventArgs e)
+    private void OnMouseEvent (object? sender, MouseEventArgs e)
     {
         NavigationDirection direction = NavigationDirection.Backward;
 

+ 1 - 1
Terminal.Gui/Views/Button.cs

@@ -125,7 +125,7 @@ public class Button : View, IDesignable
         }
     }
 
-    private void Button_MouseClick (object sender, MouseEventEventArgs e)
+    private void Button_MouseClick (object sender, MouseEventArgs e)
     {
         if (e.Handled)
         {

+ 1 - 1
Terminal.Gui/Views/ColorPicker.16.cs

@@ -181,7 +181,7 @@ public class ColorPicker16 : View
 
     // TODO: Decouple Cursor from SelectedColor so that mouse press-and-hold can show the color under the cursor.
 
-    private void ColorPicker_MouseClick (object sender, MouseEventEventArgs me)
+    private void ColorPicker_MouseClick (object sender, MouseEventArgs me)
     {
         // if (CanFocus)
         {

+ 1 - 8
Terminal.Gui/Views/ComboBox.cs

@@ -836,17 +836,10 @@ public class ComboBox : View, IDesignable
             set => _hideDropdownListOnClick = WantContinuousButtonPressed = value;
         }
 
-        // BUGBUG: OnMouseEvent is internal!
         protected override bool OnMouseEvent (MouseEvent me)
         {
-            var res = false;
             bool isMousePositionValid = IsMousePositionValid (me);
 
-            if (isMousePositionValid)
-            {
-                res = base.OnMouseEvent (me);
-            }
-
             if (HideDropdownListOnClick && me.Flags == MouseFlags.Button1Clicked)
             {
                 if (!isMousePositionValid && !_isFocusing)
@@ -879,7 +872,7 @@ public class ComboBox : View, IDesignable
                 return true;
             }
 
-            return res;
+            return false;
         }
 
         public override void OnDrawContent (Rectangle viewport)

+ 2 - 4
Terminal.Gui/Views/DateField.cs

@@ -116,14 +116,12 @@ public class DateField : TextField
     /// <inheritdoc/>
     protected override bool OnMouseEvent  (MouseEvent ev)
     {
-        bool result = base.OnMouseEvent (ev);
-
-        if (result && SelectedLength == 0 && ev.Flags.HasFlag (MouseFlags.Button1Pressed))
+        if (SelectedLength == 0 && ev.Flags.HasFlag (MouseFlags.Button1Pressed))
         {
             AdjCursorPosition (ev.Position.X);
         }
 
-        return result;
+        return ev.Handled;
     }
 
     /// <summary>Event firing method for the <see cref="DateChanged"/> event.</summary>

+ 3 - 3
Terminal.Gui/Views/FileDialog.cs

@@ -1007,7 +1007,7 @@ public class FileDialog : Dialog
         }
     }
 
-    private void OnTableViewMouseClick (object sender, MouseEventEventArgs e)
+    private void OnTableViewMouseClick (object sender, MouseEventArgs e)
     {
         Point? clickedCell = _tableView.ScreenToCell (e.MouseEvent.Position.X, e.MouseEvent.Position.Y, out int? clickedCol);
 
@@ -1198,7 +1198,7 @@ public class FileDialog : Dialog
 
     private FileSystemInfoStats RowToStats (int rowIndex) { return State?.Children [rowIndex]; }
 
-    private void ShowCellContextMenu (Point? clickedCell, MouseEventEventArgs e)
+    private void ShowCellContextMenu (Point? clickedCell, MouseEventArgs e)
     {
         if (clickedCell is null)
         {
@@ -1222,7 +1222,7 @@ public class FileDialog : Dialog
         contextMenu.Show (menuItems);
     }
 
-    private void ShowHeaderContextMenu (int clickedCol, MouseEventEventArgs e)
+    private void ShowHeaderContextMenu (int clickedCol, MouseEventArgs e)
     {
         string sort = GetProposedNewSortOrder (clickedCol, out bool isAsc);
 

+ 1 - 1
Terminal.Gui/Views/FrameView.cs

@@ -22,7 +22,7 @@ public class FrameView : View
         MouseClick += FrameView_MouseClick;
     }
 
-    private void FrameView_MouseClick (object sender, MouseEventEventArgs e)
+    private void FrameView_MouseClick (object sender, MouseEventArgs e)
     {
         // base sets focus on HotKey
         e.Handled = InvokeCommand (Command.HotKey, ctx: new (Command.HotKey, key: null, data: this)) == true;

+ 1 - 1
Terminal.Gui/Views/Label.cs

@@ -32,7 +32,7 @@ public class Label : View, IDesignable
     }
 
     // TODO: base raises Select, but we want to raise HotKey. This can be simplified?
-    private void Label_MouseClick (object sender, MouseEventEventArgs e)
+    private void Label_MouseClick (object sender, MouseEventArgs e)
     {
         if (!CanFocus)
         {

+ 1 - 1
Terminal.Gui/Views/RadioGroup.cs

@@ -220,7 +220,7 @@ public class RadioGroup : View, IDesignable, IOrientation
     /// </remarks>
     public bool DoubleClickAccepts { get; set; } = true;
 
-    private void RadioGroup_MouseClick (object? sender, MouseEventEventArgs e)
+    private void RadioGroup_MouseClick (object? sender, MouseEventArgs e)
     {
         if (e.MouseEvent.Flags.HasFlag (MouseFlags.Button1Clicked))
         {

+ 1 - 1
Terminal.Gui/Views/ScrollBarView.cs

@@ -777,7 +777,7 @@ public class ScrollBarView : View
     //	}
     //}
 
-    private void ContentBottomRightCorner_MouseClick (object sender, MouseEventEventArgs me)
+    private void ContentBottomRightCorner_MouseClick (object sender, MouseEventArgs me)
     {
         if (me.MouseEvent.Flags == MouseFlags.WheeledDown
             || me.MouseEvent.Flags == MouseFlags.WheeledUp

+ 1 - 1
Terminal.Gui/Views/TabView.cs

@@ -508,7 +508,7 @@ public class TabView : View
         return Style.ShowTopLine ? 3 : 2;
     }
 
-    private void Tab_MouseClick (object sender, MouseEventEventArgs e)
+    private void Tab_MouseClick (object sender, MouseEventArgs e)
     {
         e.Handled = _tabsBar.NewMouseEvent (e.MouseEvent) == true;
     }

+ 1 - 1
Terminal.Gui/Views/TableView/CheckBoxTableSourceWrapper.cs

@@ -150,7 +150,7 @@ public abstract class CheckBoxTableSourceWrapperBase : ITableSource
         tableView.SetNeedsDisplay ();
     }
 
-    private void TableView_MouseClick (object sender, MouseEventEventArgs e)
+    private void TableView_MouseClick (object sender, MouseEventArgs e)
     {
         // we only care about clicks (not movements)
         if (!e.MouseEvent.Flags.HasFlag (MouseFlags.Button1Clicked))

+ 1 - 1
Terminal.Gui/Views/TableView/TreeTableSource.cs

@@ -166,7 +166,7 @@ public class TreeTableSource<T> : IEnumerableTableSource<T>, IDisposable where T
         }
     }
 
-    private void Table_MouseClick (object sender, MouseEventEventArgs e)
+    private void Table_MouseClick (object sender, MouseEventArgs e)
     {
         Point? hit = _tableView.ScreenToCell (e.MouseEvent.Position.X, e.MouseEvent.Position.Y, out int? headerIfAny, out int? offsetX);
 

+ 2 - 4
Terminal.Gui/Views/TimeField.cs

@@ -165,15 +165,13 @@ public class TimeField : TextField
     /// <inheritdoc/>
     protected override bool OnMouseEvent  (MouseEvent ev)
     {
-        bool result = base.OnMouseEvent (ev);
-
-        if (result && SelectedLength == 0 && ev.Flags.HasFlag (MouseFlags.Button1Pressed))
+        if (SelectedLength == 0 && ev.Flags.HasFlag (MouseFlags.Button1Pressed))
         {
             int point = ev.Position.X;
             AdjCursorPosition (point);
         }
 
-        return result;
+        return ev.Handled;
     }
 
     /// <inheritdoc/>

+ 1 - 1
Terminal.Gui/Views/Toplevel.cs

@@ -62,7 +62,7 @@ public partial class Toplevel : View
     /// </summary>
     public bool Modal { get; set; }
 
-    private void Toplevel_MouseClick (object? sender, MouseEventEventArgs e) { e.Handled = InvokeCommand (Command.HotKey) == true; }
+    private void Toplevel_MouseClick (object? sender, MouseEventArgs e) { e.Handled = InvokeCommand (Command.HotKey) == true; }
 
     #endregion
 

+ 2 - 2
UICatalog/Scenarios/ASCIICustomButton.cs

@@ -127,7 +127,7 @@ public class ASCIICustomButtonTest : Scenario
         }
 
         public event Action<ASCIICustomButton> PointerEnter;
-        private void This_MouseClick (object sender, MouseEventEventArgs obj) { NewMouseEvent (obj.MouseEvent); }
+        private void This_MouseClick (object sender, MouseEventArgs obj) { NewMouseEvent (obj.MouseEvent); }
     }
 
     public class ScrollViewTestWindow : Window
@@ -310,7 +310,7 @@ public class ASCIICustomButtonTest : Scenario
             }
         }
 
-        private void Button_MouseClick (object sender, MouseEventEventArgs obj)
+        private void Button_MouseClick (object sender, MouseEventArgs obj)
         {
             if (obj.MouseEvent.Flags == MouseFlags.WheeledDown)
             {

+ 1 - 1
UICatalog/Scenarios/Bars.cs

@@ -187,7 +187,7 @@ public class Bars : Scenario
 
         menuLikeExamples.MouseClick += MenuLikeExamplesMouseClick;
 
-        void MenuLikeExamplesMouseClick (object sender, MouseEventEventArgs e)
+        void MenuLikeExamplesMouseClick (object sender, MouseEventArgs e)
         {
             if (e.MouseEvent.Flags.HasFlag (MouseFlags.Button3Clicked))
             {

+ 2 - 2
UICatalog/Scenarios/CharacterMap.cs

@@ -527,7 +527,7 @@ internal class CharMap : View
         Padding.Add (up, down, left, right);
     }
 
-    private void Handle_MouseEvent (object sender, MouseEventEventArgs e)
+    private void Handle_MouseEvent (object sender, MouseEventArgs e)
     {
         if (e.MouseEvent.Flags == MouseFlags.WheeledDown)
         {
@@ -839,7 +839,7 @@ internal class CharMap : View
     private void CopyCodePoint () { Clipboard.Contents = $"U+{SelectedCodePoint:x5}"; }
     private void CopyGlyph () { Clipboard.Contents = $"{new Rune (SelectedCodePoint)}"; }
 
-    private void Handle_MouseClick (object sender, MouseEventEventArgs args)
+    private void Handle_MouseClick (object sender, MouseEventArgs args)
     {
         MouseEvent me = args.MouseEvent;
 

+ 1 - 1
UICatalog/Scenarios/ContentScrolling.cs

@@ -52,7 +52,7 @@ public class ContentScrolling : Scenario
             MouseEvent += VirtualDemoView_MouseEvent;
         }
 
-        private void VirtualDemoView_MouseEvent (object sender, MouseEventEventArgs e)
+        private void VirtualDemoView_MouseEvent (object sender, MouseEventArgs e)
         {
             if (e.MouseEvent.Flags == MouseFlags.WheeledDown)
             {

+ 1 - 1
UICatalog/Scenarios/TableEditor.cs

@@ -1254,7 +1254,7 @@ public class TableEditor : Scenario
         _tableView.Update ();
     }
 
-    private void ShowHeaderContextMenu (int clickedCol, MouseEventEventArgs e)
+    private void ShowHeaderContextMenu (int clickedCol, MouseEventArgs e)
     {
         if (HasCheckboxes () && clickedCol == 0)
         {

+ 1 - 1
UICatalog/Scenarios/TreeViewFileSystem.cs

@@ -484,7 +484,7 @@ public class TreeViewFileSystem : Scenario
         }
     }
 
-    private void TreeViewFiles_MouseClick (object sender, MouseEventEventArgs obj)
+    private void TreeViewFiles_MouseClick (object sender, MouseEventArgs obj)
     {
         // if user right clicks
         if (obj.MouseEvent.Flags.HasFlag (MouseFlags.Button3Clicked))