diff --git a/Terminal.Gui/Core/View.cs b/Terminal.Gui/Core/View.cs index 7ba0ae4be..c89d433d2 100644 --- a/Terminal.Gui/Core/View.cs +++ b/Terminal.Gui/Core/View.cs @@ -2894,8 +2894,8 @@ namespace Terminal.Gui { return false; } - if (mouseEvent.Flags.HasFlag (MouseFlags.Button1Clicked) || mouseEvent.Flags.HasFlag (MouseFlags.Button2Clicked) - || mouseEvent.Flags.HasFlag (MouseFlags.Button3Clicked) || mouseEvent.Flags.HasFlag (MouseFlags.Button4Clicked)) { + if ((mouseEvent.Flags & MouseFlags.Button1Clicked) != 0 || (mouseEvent.Flags & MouseFlags.Button2Clicked) != 0 + || (mouseEvent.Flags & MouseFlags.Button3Clicked) != 0 || (mouseEvent.Flags & MouseFlags.Button4Clicked) != 0) { var args = new MouseEventArgs (mouseEvent); if (OnMouseClick (args)) { diff --git a/UnitTests/Views/ViewTests.cs b/UnitTests/Views/ViewTests.cs index 251f5f459..dc366989d 100644 --- a/UnitTests/Views/ViewTests.cs +++ b/UnitTests/Views/ViewTests.cs @@ -4582,16 +4582,18 @@ Test", output); 000000", new Attribute [] { Colors.TopLevel.Normal, Colors.TopLevel.Focus }); } - [Fact] - public void OnMouseClick_Is_Only_Raised_Once () + [Theory] + [InlineData (MouseFlags.Button1Pressed, MouseFlags.Button1Released, MouseFlags.Button1Clicked)] + [InlineData (MouseFlags.Button1Pressed | MouseFlags.ButtonCtrl, MouseFlags.Button1Released | MouseFlags.ButtonCtrl, MouseFlags.Button1Clicked | MouseFlags.ButtonCtrl)] + public void OnMouseClick_Is_Only_Raised_Once (MouseFlags pressed, MouseFlags released, MouseFlags clicked) { var mouseClicks = 0; var view = new View (); view.MouseClick += (_) => mouseClicks++; - view.OnMouseEvent (new MouseEvent () { Flags = MouseFlags.Button1Pressed }); - view.OnMouseEvent (new MouseEvent () { Flags = MouseFlags.Button1Released }); - view.OnMouseEvent (new MouseEvent () { Flags = MouseFlags.Button1Clicked }); + view.OnMouseEvent (new MouseEvent () { Flags = pressed }); + view.OnMouseEvent (new MouseEvent () { Flags = released }); + view.OnMouseEvent (new MouseEvent () { Flags = clicked }); Assert.Equal (1, mouseClicks); }