mirror of
https://github.com/gui-cs/Terminal.Gui.git
synced 2025-12-30 01:38:01 +01:00
Fixes #1091. Continuous button pressed not working properly on Linux.
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user