WindowsDriver - added diagnostics. Found issue. Implemented workaround

This commit is contained in:
Tig
2024-04-03 13:21:36 -05:00
parent d9658efc65
commit 72992bd8c7
2 changed files with 19 additions and 18 deletions

View File

@@ -472,6 +472,7 @@ internal class WindowsConsole
[Flags]
public enum ButtonState
{
NoButtonPressed = 0,
Button1Pressed = 1,
Button2Pressed = 4,
Button3Pressed = 8,
@@ -482,6 +483,7 @@ internal class WindowsConsole
[Flags]
public enum ControlKeyState
{
NoControlKeyPressed = 0,
RightAltPressed = 1,
LeftAltPressed = 2,
RightControlPressed = 4,
@@ -496,6 +498,7 @@ internal class WindowsConsole
[Flags]
public enum EventFlags
{
NoEvent = 0,
MouseMoved = 1,
DoubleClick = 2,
MouseWheeled = 4,
@@ -517,7 +520,7 @@ internal class WindowsConsole
[FieldOffset (12)]
public EventFlags EventFlags;
public readonly override string ToString () { return $"[Mouse({MousePosition},{ButtonState},{ControlKeyState},{EventFlags}"; }
public readonly override string ToString () { return $"[Mouse{MousePosition},{ButtonState},{ControlKeyState},{EventFlags}]"; }
}
public struct WindowBufferSizeRecord
@@ -1388,7 +1391,7 @@ internal class WindowsDriver : ConsoleDriver
case WindowsConsole.EventType.Mouse:
MouseEvent me = ToDriverMouse (inputEvent.MouseEvent);
if (me is null)
if (me is null || me.Flags == MouseFlags.None)
{
break;
}
@@ -1774,8 +1777,8 @@ internal class WindowsDriver : ConsoleDriver
{
var mouseFlag = MouseFlags.AllEvents;
//System.Diagnostics.Debug.WriteLine (
// $"X:{mouseEvent.MousePosition.X};Y:{mouseEvent.MousePosition.Y};ButtonState:{mouseEvent.ButtonState};EventFlags:{mouseEvent.EventFlags}");
Debug.WriteLine ($"ToDriverMouse: {mouseEvent}");
//$"X:{mouseEvent.MousePosition.X};Y:{mouseEvent.MousePosition.Y};ButtonState:{mouseEvent.ButtonState};EventFlags:{mouseEvent.EventFlags}");
if (_isButtonDoubleClicked || _isOneFingerDoubleClicked)
{
@@ -2003,7 +2006,7 @@ internal class WindowsDriver : ConsoleDriver
else if (mouseEvent is { ButtonState: 0, EventFlags: 0 })
{
// This happens on a double or triple click event.
mouseFlag = 0;
mouseFlag = MouseFlags.None;
}
mouseFlag = SetControlKeyStates (mouseEvent, mouseFlag);
@@ -2129,7 +2132,16 @@ internal class WindowsMainLoop : IMainLoopDriver
void IMainLoopDriver.TearDown ()
{
// Eat any outstanding events
//var r = _winConsole.ReadConsoleInput ();
var records = _winConsole.ReadConsoleInput ();
if (records != null)
{
foreach (var rec in records)
{
Debug.WriteLine ($"Teardown: {rec.ToString ()}");
Debug.Assert (rec is not { EventType: WindowsConsole.EventType.Mouse, MouseEvent.ButtonState: WindowsConsole.ButtonState.Button1Pressed });
}
}
_inputHandlerTokenSource?.Cancel ();
_inputHandlerTokenSource?.Dispose ();

View File

@@ -883,20 +883,9 @@ internal class CharMap : ScrollView
}
catch (HttpRequestException e)
{
(s as Dialog).Text = e.Message;
Application.Invoke (
() =>
{
spinner.Visible = false;
errorLabel.Text = e.Message;
errorLabel.ColorScheme = Colors.ColorSchemes ["Error"];
errorLabel.Visible = true;
}
);
Application.Invoke (() => waitIndicator.RequestStop ());
}
(s as Dialog)?.RequestStop ();
};
Application.Run (waitIndicator);
waitIndicator.Dispose ();