From b69bc2c06a78c2854e5f798f6843b5f53404f92e Mon Sep 17 00:00:00 2001 From: Emil Ernerfeldt Date: Sat, 24 Apr 2021 11:01:44 +0200 Subject: [PATCH] egui_web: Scroll faster when scrolling with mouse wheel Closes https://github.com/emilk/egui/issues/159 --- egui_web/CHANGELOG.md | 3 +++ egui_web/src/lib.rs | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/egui_web/CHANGELOG.md b/egui_web/CHANGELOG.md index 6e0a7651..43bc6933 100644 --- a/egui_web/CHANGELOG.md +++ b/egui_web/CHANGELOG.md @@ -5,6 +5,9 @@ All notable changes to the `egui_web` integration will be noted in this file. ## Unreleased +### Fixed ⭐ +* Scroll faster when scrolling with mouse wheel. + ## 0.11.0 - 2021-04-05 diff --git a/egui_web/src/lib.rs b/egui_web/src/lib.rs index 4b8e5596..ace9488d 100644 --- a/egui_web/src/lib.rs +++ b/egui_web/src/lib.rs @@ -957,8 +957,19 @@ fn install_canvas_events(runner_ref: &AppRunnerRef) -> Result<(), JsValue> { let runner_ref = runner_ref.clone(); let closure = Closure::wrap(Box::new(move |event: web_sys::WheelEvent| { let mut runner_lock = runner_ref.0.lock(); - runner_lock.input.raw.scroll_delta.x -= event.delta_x() as f32; - runner_lock.input.raw.scroll_delta.y -= event.delta_y() as f32; + + let scroll_multiplier = match event.delta_mode() { + web_sys::WheelEvent::DOM_DELTA_PAGE => { + canvas_size_in_points(runner_ref.0.lock().canvas_id()).y + } + web_sys::WheelEvent::DOM_DELTA_LINE => { + 24.0 // TODO: tweak this + } + _ => 1.0, + }; + + runner_lock.input.raw.scroll_delta.x -= scroll_multiplier * event.delta_x() as f32; + runner_lock.input.raw.scroll_delta.y -= scroll_multiplier * event.delta_y() as f32; runner_lock.needs_repaint.set_true(); event.stop_propagation(); event.prevent_default();