mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-29 17:28:01 +01:00
Includes ControlKeyState for all the buttons events.
This commit is contained in:
@@ -594,6 +594,7 @@ namespace Terminal.Gui {
|
||||
LastMouseButtonPressed = null;
|
||||
IsButtonReleased = false;
|
||||
}
|
||||
|
||||
//Debug.WriteLine ($"MouseEventRecord: {mouseEvent}");
|
||||
if ((mouseEvent.EventFlags == 0 && LastMouseButtonPressed == null && !IsButtonDoubleClicked) ||
|
||||
(mouseEvent.EventFlags == WindowsConsole.EventFlags.MouseMoved &&
|
||||
@@ -648,18 +649,7 @@ namespace Terminal.Gui {
|
||||
}
|
||||
LastMouseButtonPressed = null;
|
||||
IsButtonReleased = false;
|
||||
|
||||
switch (mouseEvent.ControlKeyState) {
|
||||
case WindowsConsole.ControlKeyState.RightControlPressed:
|
||||
case WindowsConsole.ControlKeyState.LeftControlPressed:
|
||||
mouseFlag |= MouseFlags.ButtonCtrl;
|
||||
break;
|
||||
|
||||
case WindowsConsole.ControlKeyState.ShiftPressed:
|
||||
mouseFlag |= MouseFlags.ButtonShift;
|
||||
break;
|
||||
}
|
||||
} else if (mouseEvent.EventFlags == WindowsConsole.EventFlags.DoubleClick) {
|
||||
} else if (mouseEvent.EventFlags.HasFlag (WindowsConsole.EventFlags.DoubleClick)) {
|
||||
switch (mouseEvent.ButtonState) {
|
||||
case WindowsConsole.ButtonState.Button1Pressed:
|
||||
mouseFlag = MouseFlags.Button1DoubleClicked;
|
||||
@@ -700,21 +690,13 @@ namespace Terminal.Gui {
|
||||
break;
|
||||
}
|
||||
|
||||
switch (mouseEvent.ControlKeyState) {
|
||||
case WindowsConsole.ControlKeyState.RightControlPressed:
|
||||
case WindowsConsole.ControlKeyState.LeftControlPressed:
|
||||
mouseFlag |= MouseFlags.ButtonCtrl;
|
||||
break;
|
||||
|
||||
case WindowsConsole.ControlKeyState.ShiftPressed:
|
||||
mouseFlag |= MouseFlags.ButtonShift;
|
||||
break;
|
||||
}
|
||||
} else if (mouseEvent.EventFlags == WindowsConsole.EventFlags.MouseMoved) {
|
||||
mouseFlag = MouseFlags.ReportMousePosition;
|
||||
}
|
||||
|
||||
//Debug.WriteLine ($"MouseFlags: {mouseFlag}");
|
||||
mouseFlag = SetControlKeyStates (mouseEvent, mouseFlag);
|
||||
|
||||
Debug.WriteLine ($"MouseFlags: {mouseFlag}");
|
||||
return new MouseEvent () {
|
||||
X = mouseEvent.MousePosition.X,
|
||||
Y = mouseEvent.MousePosition.Y,
|
||||
@@ -722,6 +704,21 @@ namespace Terminal.Gui {
|
||||
};
|
||||
}
|
||||
|
||||
private static MouseFlags SetControlKeyStates (WindowsConsole.MouseEventRecord mouseEvent, MouseFlags mouseFlag)
|
||||
{
|
||||
if (mouseEvent.ControlKeyState.HasFlag (WindowsConsole.ControlKeyState.RightControlPressed) ||
|
||||
mouseEvent.ControlKeyState.HasFlag (WindowsConsole.ControlKeyState.LeftControlPressed))
|
||||
mouseFlag |= MouseFlags.ButtonCtrl;
|
||||
|
||||
if (mouseEvent.ControlKeyState.HasFlag (WindowsConsole.ControlKeyState.ShiftPressed))
|
||||
mouseFlag |= MouseFlags.ButtonShift;
|
||||
|
||||
if (mouseEvent.ControlKeyState.HasFlag (WindowsConsole.ControlKeyState.RightAltPressed) ||
|
||||
mouseEvent.ControlKeyState.HasFlag (WindowsConsole.ControlKeyState.LeftAltPressed))
|
||||
mouseFlag |= MouseFlags.ButtonAlt;
|
||||
return mouseFlag;
|
||||
}
|
||||
|
||||
bool timer (MainLoop caller)
|
||||
{
|
||||
IsButtonDoubleClicked = false;
|
||||
|
||||
Reference in New Issue
Block a user