From 1151c64323323987a0416335f2fac04689622782 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 13 Nov 2023 10:32:43 -0700 Subject: [PATCH] Only scroll text box when cursor is above it --- src/text_box.rs | 58 ++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/src/text_box.rs b/src/text_box.rs index afa1fb9..1430e63 100644 --- a/src/text_box.rs +++ b/src/text_box.rs @@ -531,35 +531,39 @@ where status = Status::Captured; } } - Event::Mouse(MouseEvent::WheelScrolled { delta }) => match delta { - ScrollDelta::Lines { x, y } => { - //TODO: this adjustment is just a guess! - state.scroll_pixels = 0.0; - let lines = (-y * 6.0) as i32; - if lines != 0 { - editor.action(Action::Scroll { lines }); + Event::Mouse(MouseEvent::WheelScrolled { delta }) => { + if let Some(_p) = cursor_position.position_in(layout.bounds()) { + match delta { + ScrollDelta::Lines { x, y } => { + //TODO: this adjustment is just a guess! + state.scroll_pixels = 0.0; + let lines = (-y * 6.0) as i32; + if lines != 0 { + editor.action(Action::Scroll { lines }); + } + status = Status::Captured; + } + ScrollDelta::Pixels { x, y } => { + //TODO: this adjustment is just a guess! + state.scroll_pixels -= y * 6.0; + let mut lines = 0; + let metrics = editor.buffer().metrics(); + while state.scroll_pixels <= -metrics.line_height { + lines -= 1; + state.scroll_pixels += metrics.line_height; + } + while state.scroll_pixels >= metrics.line_height { + lines += 1; + state.scroll_pixels -= metrics.line_height; + } + if lines != 0 { + editor.action(Action::Scroll { lines }); + } + status = Status::Captured; + } } - status = Status::Captured; } - ScrollDelta::Pixels { x, y } => { - //TODO: this adjustment is just a guess! - state.scroll_pixels -= y * 6.0; - let mut lines = 0; - let metrics = editor.buffer().metrics(); - while state.scroll_pixels <= -metrics.line_height { - lines -= 1; - state.scroll_pixels += metrics.line_height; - } - while state.scroll_pixels >= metrics.line_height { - lines += 1; - state.scroll_pixels -= metrics.line_height; - } - if lines != 0 { - editor.action(Action::Scroll { lines }); - } - status = Status::Captured; - } - }, + } _ => (), }