mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 01:38:01 +01:00
Merge branch 'master' of tig:migueldeicaza/gui.cs
This commit is contained in:
@@ -695,7 +695,8 @@ namespace Terminal.Gui {
|
||||
keyUpHandler (new KeyEvent (map, keyModifiers));
|
||||
}
|
||||
}
|
||||
keyModifiers = null;
|
||||
if (!inputEvent.KeyEvent.bKeyDown)
|
||||
keyModifiers = null;
|
||||
break;
|
||||
|
||||
case WindowsConsole.EventType.Mouse:
|
||||
@@ -726,9 +727,9 @@ namespace Terminal.Gui {
|
||||
MouseFlags mouseFlag = MouseFlags.AllEvents;
|
||||
|
||||
if (IsButtonDoubleClicked) {
|
||||
Task.Run (async () => {
|
||||
await Task.Delay (100);
|
||||
IsButtonDoubleClicked = false;
|
||||
Application.MainLoop.AddIdle (() => {
|
||||
ProcessButtonDoubleClickedAsync ().ConfigureAwait (false);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -774,23 +775,9 @@ namespace Terminal.Gui {
|
||||
IsButtonPressed = true;
|
||||
|
||||
if ((mouseFlag & MouseFlags.ReportMousePosition) == 0) {
|
||||
Task.Run (async () => {
|
||||
while (IsButtonPressed) {
|
||||
await Task.Delay (200);
|
||||
var me = new MouseEvent () {
|
||||
X = mouseEvent.MousePosition.X,
|
||||
Y = mouseEvent.MousePosition.Y,
|
||||
Flags = mouseFlag
|
||||
};
|
||||
|
||||
var view = Application.wantContinuousButtonPressedView;
|
||||
if (view == null)
|
||||
break;
|
||||
if (IsButtonPressed && (mouseFlag & MouseFlags.ReportMousePosition) == 0) {
|
||||
mouseHandler (me);
|
||||
//mainLoop.Driver.Wakeup ();
|
||||
}
|
||||
}
|
||||
Application.MainLoop.AddIdle (() => {
|
||||
ProcessContinuousButtonPressedAsync (mouseEvent, mouseFlag).ConfigureAwait (false);
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -892,6 +879,32 @@ namespace Terminal.Gui {
|
||||
};
|
||||
}
|
||||
|
||||
private async Task ProcessButtonDoubleClickedAsync ()
|
||||
{
|
||||
await Task.Delay (200);
|
||||
IsButtonDoubleClicked = false;
|
||||
}
|
||||
|
||||
async Task ProcessContinuousButtonPressedAsync (WindowsConsole.MouseEventRecord mouseEvent, MouseFlags mouseFlag)
|
||||
{
|
||||
while (IsButtonPressed) {
|
||||
await Task.Delay (200);
|
||||
var me = new MouseEvent () {
|
||||
X = mouseEvent.MousePosition.X,
|
||||
Y = mouseEvent.MousePosition.Y,
|
||||
Flags = mouseFlag
|
||||
};
|
||||
|
||||
var view = Application.wantContinuousButtonPressedView;
|
||||
if (view == null)
|
||||
break;
|
||||
if (IsButtonPressed && (mouseFlag & MouseFlags.ReportMousePosition) == 0) {
|
||||
mouseHandler (me);
|
||||
//mainLoop.Driver.Wakeup ();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static MouseFlags SetControlKeyStates (WindowsConsole.MouseEventRecord mouseEvent, MouseFlags mouseFlag)
|
||||
{
|
||||
if (mouseEvent.ControlKeyState.HasFlag (WindowsConsole.ControlKeyState.RightControlPressed) ||
|
||||
|
||||
@@ -352,7 +352,7 @@ namespace Terminal.Gui {
|
||||
View = view
|
||||
};
|
||||
if (OutsideFrame (new Point (nme.X, nme.Y), mouseGrabView.Frame))
|
||||
lastMouseOwnerView.OnMouseLeave (me);
|
||||
lastMouseOwnerView?.OnMouseLeave (me);
|
||||
if (mouseGrabView != null) {
|
||||
mouseGrabView.OnMouseEvent (nme);
|
||||
return;
|
||||
@@ -480,7 +480,7 @@ namespace Terminal.Gui {
|
||||
// Closes the application if it's true.
|
||||
if (closeDriver) {
|
||||
MainLoop = null;
|
||||
Driver.End ();
|
||||
Driver?.End ();
|
||||
Driver = null;
|
||||
}
|
||||
|
||||
|
||||
@@ -88,8 +88,6 @@ namespace UICatalog {
|
||||
scenario.Run ();
|
||||
scenario = GetScenarioToRun ();
|
||||
}
|
||||
// Now closes the driver too.
|
||||
Application.Shutdown ();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user