From f24c6833f3d05d34fd376380dbfd1d012bb1db3e Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Wed, 24 Apr 2024 15:58:28 -0400 Subject: [PATCH 1/2] fix(scrollable): filter scroll events in the wrong direction --- widget/src/scrollable.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/widget/src/scrollable.rs b/widget/src/scrollable.rs index faa5032e5e..d66b316d8e 100644 --- a/widget/src/scrollable.rs +++ b/widget/src/scrollable.rs @@ -800,6 +800,13 @@ pub fn update( } mouse::ScrollDelta::Pixels { x, y } => Vector::new(x, y), }; + if matches!(direction, Direction::Vertical(_)) + && delta.y.abs() < 0.1 + || matches!(direction, Direction::Horizontal(_)) + && delta.x.abs() < 0.1 + { + return event::Status::Ignored; + } state.scroll(delta, direction, bounds, content_bounds); From df77e56d0d1c528be5114fd939fe89cd6782e43a Mon Sep 17 00:00:00 2001 From: Ashley Wulber Date: Thu, 25 Apr 2024 15:25:48 -0400 Subject: [PATCH 2/2] fix(tiny_skia): damage --- tiny_skia/src/window/compositor.rs | 41 +++++++++++++++--------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/tiny_skia/src/window/compositor.rs b/tiny_skia/src/window/compositor.rs index 21ccf6200e..37b03cb054 100644 --- a/tiny_skia/src/window/compositor.rs +++ b/tiny_skia/src/window/compositor.rs @@ -183,31 +183,30 @@ pub fn present>( }) .unwrap_or_else(|| vec![Rectangle::with_size(viewport.logical_size())]); - if damage.is_empty() { - return Ok(()); - } - surface.primitive_stack.push_front(primitives.to_vec()); - surface.background_color = background_color; - let damage = damage::group(damage, scale_factor, physical_size); + if !damage.is_empty() { + surface.background_color = background_color; - let mut pixels = tiny_skia::PixmapMut::from_bytes( - bytemuck::cast_slice_mut(&mut buffer), - physical_size.width, - physical_size.height, - ) - .expect("Create pixel map"); + let damage = damage::group(damage, scale_factor, physical_size); - backend.draw( - &mut pixels, - &mut surface.clip_mask, - primitives, - viewport, - &damage, - background_color, - overlay, - ); + let mut pixels = tiny_skia::PixmapMut::from_bytes( + bytemuck::cast_slice_mut(&mut buffer), + physical_size.width, + physical_size.height, + ) + .expect("Create pixel map"); + + backend.draw( + &mut pixels, + &mut surface.clip_mask, + primitives, + viewport, + &damage, + background_color, + overlay, + ); + } buffer.present().map_err(|_| compositor::SurfaceError::Lost) }