From a12357a96d1295d19289f3f9804b901da5ceb9f6 Mon Sep 17 00:00:00 2001 From: Kaur Kuut Date: Sat, 9 May 2020 18:50:13 +0300 Subject: [PATCH] Fix scale in GTK wheel event handler. --- druid-shell/src/platform/gtk/window.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/druid-shell/src/platform/gtk/window.rs b/druid-shell/src/platform/gtk/window.rs index e1a02ffbae..21663ebefd 100644 --- a/druid-shell/src/platform/gtk/window.rs +++ b/druid-shell/src/platform/gtk/window.rs @@ -408,8 +408,7 @@ impl WindowBuilder { win_state.drawing_area.connect_scroll_event(clone!(handle => move |_widget, scroll| { if let Some(state) = handle.state.upgrade() { - if let Ok(mut handler) = state.handler.try_borrow_mut() { - + if let Ok(scale) = state.scale.try_borrow() { let mods = get_modifiers(scroll.get_state()); // The magic "120"s are from Microsoft's documentation for WM_MOUSEWHEEL. @@ -441,8 +440,8 @@ impl WindowBuilder { } }; - if let Some(wheel_delta) = wheel_delta{ - let mouse_event = MouseEvent{ + if let Some(wheel_delta) = wheel_delta { + let mouse_event = MouseEvent { pos: scale.to_dp(&Point::from(scroll.get_position())), buttons: get_mouse_buttons_from_modifiers(scroll.get_state()), mods, @@ -451,10 +450,14 @@ impl WindowBuilder { wheel_delta }; - handler.wheel(&mouse_event); + if let Ok(mut handler) = state.handler.try_borrow_mut() { + handler.wheel(&mouse_event); + } else { + log::info!("GTK event was dropped because the handler was already borrowed"); + } } } else { - log::info!("GTK event was dropped because the handler was already borrowed"); + log::warn!("GTK event was dropped because the scale was already borrowed"); } }