From 4101309d1e062face0b0200aae2b3459f6dfd3a2 Mon Sep 17 00:00:00 2001 From: Benjamin Klum Date: Wed, 23 Nov 2022 17:31:11 +0100 Subject: [PATCH] #686 Improve how mouse target values are displayed in mapping panel --- main/src/domain/targets/mouse_target.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/main/src/domain/targets/mouse_target.rs b/main/src/domain/targets/mouse_target.rs index cd8852312..fa5fdf0ba 100644 --- a/main/src/domain/targets/mouse_target.rs +++ b/main/src/domain/targets/mouse_target.rs @@ -114,13 +114,18 @@ impl RealearnTarget for MouseTarget { fn supports_automatic_feedback(&self) -> bool { false } -} -impl MouseTarget { - fn cursor_position(&self) -> Result { - self.mouse.cursor_position() + fn can_report_current_value(&self) -> bool { + use MouseActionType::*; + match self.action_type { + MoveTo | MoveBy => self.mouse.cursor_position().is_ok(), + PressOrRelease => self.mouse.is_pressed(self.button).is_ok(), + Scroll => false, + } } +} +impl MouseTarget { fn axis_size(&self) -> u32 { self.mouse.axis_size(self.axis) } @@ -146,7 +151,7 @@ impl MouseTarget { }; match instruction { MoveCursorInstruction::To(pos) => { - let current_pos = self.cursor_position()?; + let current_pos = self.mouse.cursor_position()?; let new_pos = match self.axis { Axis::X => MouseCursorPosition::new(pos, current_pos.y), Axis::Y => MouseCursorPosition::new(current_pos.x, pos), @@ -197,7 +202,7 @@ impl<'a, M: Mouse> Target<'a> for MouseTarget { match self.action_type { MoveTo | MoveBy => { let axis_size = self.axis_size(); - let pos = self.cursor_position().ok()?; + let pos = self.mouse.cursor_position().ok()?; let pos_on_axis = get_pos_on_axis(pos, self.axis); let fraction = Fraction::new(pos_on_axis, axis_size); Some(AbsoluteValue::Discrete(fraction))