浏览代码

Using mask check instead of HasFlag method.

BDisp 1 年之前
父节点
当前提交
1724e71601
共有 2 个文件被更改,包括 9 次插入7 次删除
  1. 2 2
      Terminal.Gui/Core/View.cs
  2. 7 5
      UnitTests/Views/ViewTests.cs

+ 2 - 2
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)) {

+ 7 - 5
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);
 		}