From cd1780c2d8b635c1915e66ae96290078e51ba4f8 Mon Sep 17 00:00:00 2001 From: Stephen Hunt Date: Sat, 6 Jan 2024 04:01:07 -0800 Subject: [PATCH] Capture double click mouse events (#826) When double clicking on Windows, the crossterm_winapi emits the first click with `EventFlags::PressOrRelease` and the second click with `EventFlags::DoubleClick`. Previously this code explicitly ignored mouse events with `EventFlags::DoubleClick` because "double click not supported by unix terminals." This change captures the double click and surfaces them as normal click events. --- src/event/sys/windows/parse.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/event/sys/windows/parse.rs b/src/event/sys/windows/parse.rs index 74289e5a..97677ecf 100644 --- a/src/event/sys/windows/parse.rs +++ b/src/event/sys/windows/parse.rs @@ -314,7 +314,7 @@ fn parse_mouse_event_record( let button_state = event.button_state; let kind = match event.event_flags { - EventFlags::PressOrRelease => { + EventFlags::PressOrRelease | EventFlags::DoubleClick => { if button_state.left_button() && !buttons_pressed.left { Some(MouseEventKind::Down(MouseButton::Left)) } else if !button_state.left_button() && buttons_pressed.left { @@ -357,7 +357,6 @@ fn parse_mouse_event_record( None } } - EventFlags::DoubleClick => None, // double click not supported by unix terminals EventFlags::MouseHwheeled => { if button_state.scroll_left() { Some(MouseEventKind::ScrollLeft)