diff --git a/desktop/src/cef/input.rs b/desktop/src/cef/input.rs index a13d8fa23e..a186053d0c 100644 --- a/desktop/src/cef/input.rs +++ b/desktop/src/cef/input.rs @@ -6,7 +6,7 @@ mod keymap; use keymap::{ToCharRepresentation, ToNativeKeycode, ToVKBits}; mod state; -pub(crate) use state::{CefModifiers, InputState}; +pub(crate) use state::{CefModifiers, ClickCount, InputState}; use super::consts::{PINCH_ZOOM_SPEED, SCROLL_LINE_HEIGHT, SCROLL_LINE_WIDTH, SCROLL_SPEED_X, SCROLL_SPEED_Y}; @@ -36,7 +36,11 @@ pub(crate) fn handle_window_event(browser: &Browser, input_state: &mut InputStat } }; - let cef_click_count = input_state.mouse_input(mouse_button, state).into(); + let click_count = input_state.mouse_input(mouse_button, state); + if matches!(click_count, ClickCount::Ignore) { + return; + } + let cef_click_count = click_count.into(); let cef_mouse_up = match state { ElementState::Pressed => 0, ElementState::Released => 1, diff --git a/desktop/src/cef/input/state.rs b/desktop/src/cef/input/state.rs index 45d3c9c7ac..fb3de95e38 100644 --- a/desktop/src/cef/input/state.rs +++ b/desktop/src/cef/input/state.rs @@ -173,6 +173,10 @@ impl ClickTracker { } } + if matches!(state, ElementState::Released) && record.down_count != record.up_count { + return ClickCount::Ignore; + } + count } } @@ -183,6 +187,7 @@ pub(crate) enum ClickCount { Single, Double, Triple, + Ignore, } impl From for i32 { fn from(count: ClickCount) -> i32 { @@ -190,6 +195,7 @@ impl From for i32 { ClickCount::Single => 1, ClickCount::Double => 2, ClickCount::Triple => 3, + ClickCount::Ignore => 0, } } }