浏览代码

Fixes #1185. Button click is only processed if there are no mouse mov… (#1186)

* Fixes #1185. Button click is only processed if there are no mouse movement after a button pressed and the released.

* Fixes an alt + hotkey issue that were sent separately instead of one shipping only.
BDisp 4 年之前
父节点
当前提交
b8bb453992
共有 1 个文件被更改,包括 14 次插入5 次删除
  1. 14 5
      Terminal.Gui/ConsoleDrivers/NetDriver.cs

+ 14 - 5
Terminal.Gui/ConsoleDrivers/NetDriver.cs

@@ -255,10 +255,18 @@ namespace Terminal.Gui {
 			case 91:
 				ConsoleKeyInfo [] cki = new ConsoleKeyInfo [] { consoleKeyInfo };
 				ConsoleModifiers mod = consoleKeyInfo.Modifiers;
-				while (Console.KeyAvailable) {
-					var result = Console.ReadKey (true);
-					Array.Resize (ref cki, cki == null ? 1 : cki.Length + 1);
-					cki [cki.Length - 1] = result;
+				int delay = 0;
+				while (delay < 100) {
+					if (Console.KeyAvailable) {
+						do {
+							var result = Console.ReadKey (true);
+							Array.Resize (ref cki, cki == null ? 1 : cki.Length + 1);
+							cki [cki.Length - 1] = result;
+						} while (Console.KeyAvailable);
+						break;
+					}
+					Thread.Sleep (50);
+					delay += 50;
 				}
 				SplitCSI (cki, ref inputResult, ref newConsoleKeyInfo, ref key, ref mouseEvent, ref mod);
 				return;
@@ -744,7 +752,8 @@ namespace Terminal.Gui {
 				MouseEvent = mouseEvent
 			});
 
-			if (!isButtonClicked && lastMouseEvent.Position != default && lastMouseEvent.Position == point
+			if (!isButtonClicked && !lastMouseEvent.ButtonState.HasFlag (MouseButtonState.ReportMousePosition)
+				&& lastMouseEvent.Position != default && lastMouseEvent.Position == point
 				&& ((buttonState & MouseButtonState.Button1Released) != 0
 				|| (buttonState & MouseButtonState.Button2Released) != 0
 				|| (buttonState & MouseButtonState.Button3Released) != 0)) {