|
@@ -269,23 +269,9 @@ namespace Terminal.Gui {
|
|
|
}
|
|
|
|
|
|
if ((mouseFlag & MouseFlags.ReportMousePosition) == 0) {
|
|
|
- Task.Run (async () => {
|
|
|
- while (IsButtonPressed && LastMouseButtonPressed != null) {
|
|
|
- await Task.Delay (100);
|
|
|
- var me = new MouseEvent () {
|
|
|
- X = cev.X,
|
|
|
- Y = cev.Y,
|
|
|
- Flags = mouseFlag
|
|
|
- };
|
|
|
-
|
|
|
- var view = Application.wantContinuousButtonPressedView;
|
|
|
- if (view == null)
|
|
|
- break;
|
|
|
- if (IsButtonPressed && LastMouseButtonPressed != null && (mouseFlag & MouseFlags.ReportMousePosition) == 0) {
|
|
|
- mouseHandler (me);
|
|
|
- //mainLoop.Driver.Wakeup ();
|
|
|
- }
|
|
|
- }
|
|
|
+ Application.MainLoop.AddIdle (() => {
|
|
|
+ ProcessContinuousButtonPressedAsync (cev, mouseFlag).ConfigureAwait (false);
|
|
|
+ return false;
|
|
|
});
|
|
|
}
|
|
|
|
|
@@ -342,7 +328,7 @@ namespace Terminal.Gui {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- private MouseFlags ProcessButtonClickedEvent (Curses.MouseEvent cev)
|
|
|
+ MouseFlags ProcessButtonClickedEvent (Curses.MouseEvent cev)
|
|
|
{
|
|
|
LastMouseButtonPressed = cev.ButtonState;
|
|
|
var mf = GetButtonState (cev, true);
|
|
@@ -358,7 +344,7 @@ namespace Terminal.Gui {
|
|
|
return mf;
|
|
|
}
|
|
|
|
|
|
- private MouseFlags ProcessButtonReleasedEvent (Curses.MouseEvent cev)
|
|
|
+ MouseFlags ProcessButtonReleasedEvent (Curses.MouseEvent cev)
|
|
|
{
|
|
|
var mf = MapCursesButton (cev.ButtonState);
|
|
|
if (!cancelButtonClicked && LastMouseButtonPressed == null && !isReportMousePosition) {
|
|
@@ -371,6 +357,26 @@ namespace Terminal.Gui {
|
|
|
return mf;
|
|
|
}
|
|
|
|
|
|
+ async Task ProcessContinuousButtonPressedAsync (Curses.MouseEvent cev, MouseFlags mouseFlag)
|
|
|
+ {
|
|
|
+ while (IsButtonPressed && LastMouseButtonPressed != null) {
|
|
|
+ await Task.Delay (100);
|
|
|
+ var me = new MouseEvent () {
|
|
|
+ X = cev.X,
|
|
|
+ Y = cev.Y,
|
|
|
+ Flags = mouseFlag
|
|
|
+ };
|
|
|
+
|
|
|
+ var view = Application.wantContinuousButtonPressedView;
|
|
|
+ if (view == null)
|
|
|
+ break;
|
|
|
+ if (IsButtonPressed && LastMouseButtonPressed != null && (mouseFlag & MouseFlags.ReportMousePosition) == 0) {
|
|
|
+ mouseHandler (me);
|
|
|
+ //mainLoop.Driver.Wakeup ();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
MouseFlags GetButtonState (Curses.MouseEvent cev, bool pressed = false)
|
|
|
{
|
|
|
MouseFlags mf = default;
|