diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2025-05-09 09:18:22 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2025-05-09 10:28:20 +0300 |
| commit | dfc42b9d82c8a29ca415dc77c211a2e9c69ae906 (patch) | |
| tree | c20d87a581a517cf7b9f5fd0ffd70da281a3868e /src/input | |
| parent | e2b9838d8944c0a2e30da7ba4c1c69dd25abc243 (diff) | |
| download | niri-dfc42b9d82c8a29ca415dc77c211a2e9c69ae906.tar.gz niri-dfc42b9d82c8a29ca415dc77c211a2e9c69ae906.tar.bz2 niri-dfc42b9d82c8a29ca415dc77c211a2e9c69ae906.zip | |
Split ScreenshotUi::pointer_down() and up()
Diffstat (limited to 'src/input')
| -rw-r--r-- | src/input/mod.rs | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/src/input/mod.rs b/src/input/mod.rs index c9d2c4f2..9cc39f74 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -2564,25 +2564,27 @@ impl State { } if button == Some(MouseButton::Left) && self.niri.screenshot_ui.is_open() { - let pos = pointer.current_location(); - if let Some((output, _)) = self.niri.output_under(pos) { - let output = output.clone(); - let geom = self.niri.global_space.output_geometry(&output).unwrap(); - let mut point = (pos - geom.loc.to_f64()) - .to_physical(output.current_scale().fractional_scale()) - .to_i32_round(); - - let size = output.current_mode().unwrap().size; - let transform = output.current_transform(); - let size = transform.transform_size(size); - point.x = min(size.w - 1, point.x); - point.y = min(size.h - 1, point.y); + if button_state == ButtonState::Pressed { + let pos = pointer.current_location(); + if let Some((output, _)) = self.niri.output_under(pos) { + let output = output.clone(); + let geom = self.niri.global_space.output_geometry(&output).unwrap(); + let mut point = (pos - geom.loc.to_f64()) + .to_physical(output.current_scale().fractional_scale()) + .to_i32_round(); - let down = button_state == ButtonState::Pressed; + let size = output.current_mode().unwrap().size; + let transform = output.current_transform(); + let size = transform.transform_size(size); + point.x = min(size.w - 1, point.x); + point.y = min(size.h - 1, point.y); - if self.niri.screenshot_ui.pointer_button(output, point, down) { - self.niri.queue_redraw_all(); + if self.niri.screenshot_ui.pointer_down(output, point) { + self.niri.queue_redraw_all(); + } } + } else if self.niri.screenshot_ui.pointer_up() { + self.niri.queue_redraw_all(); } } @@ -3085,30 +3087,6 @@ impl State { }; let tip_state = event.tip_state(); - if self.niri.screenshot_ui.is_open() { - if let Some(pos) = self.niri.tablet_cursor_location { - if let Some((output, _)) = self.niri.output_under(pos) { - let output = output.clone(); - let geom = self.niri.global_space.output_geometry(&output).unwrap(); - let mut point = (pos - geom.loc.to_f64()) - .to_physical(output.current_scale().fractional_scale()) - .to_i32_round(); - - let size = output.current_mode().unwrap().size; - let transform = output.current_transform(); - let size = transform.transform_size(size); - point.x = min(size.w - 1, point.x); - point.y = min(size.h - 1, point.y); - - let down = tip_state == TabletToolTipState::Down; - - if self.niri.screenshot_ui.pointer_button(output, point, down) { - self.niri.queue_redraw_all(); - } - } - } - } - let is_overview_open = self.niri.layout.is_overview_open(); match tip_state { @@ -3118,7 +3096,25 @@ impl State { if let Some(pos) = self.niri.tablet_cursor_location { let under = self.niri.contents_under(pos); - if let Some((window, _)) = under.window { + + if self.niri.screenshot_ui.is_open() { + if let Some(output) = under.output.clone() { + let geom = self.niri.global_space.output_geometry(&output).unwrap(); + let mut point = (pos - geom.loc.to_f64()) + .to_physical(output.current_scale().fractional_scale()) + .to_i32_round(); + + let size = output.current_mode().unwrap().size; + let transform = output.current_transform(); + let size = transform.transform_size(size); + point.x = min(size.w - 1, point.x); + point.y = min(size.h - 1, point.y); + + if self.niri.screenshot_ui.pointer_down(output, point) { + self.niri.queue_redraw_all(); + } + } + } else if let Some((window, _)) = under.window { if let Some(output) = is_overview_open.then_some(under.output).flatten() { let mut workspaces = self.niri.layout.workspaces(); if let Some(ws_idx) = workspaces.find_map(|(_, ws_idx, ws)| { @@ -3155,6 +3151,10 @@ impl State { } } TabletToolTipState::Up => { + if self.niri.screenshot_ui.pointer_up() { + self.niri.queue_redraw_all(); + } + tool.tip_up(event.time_msec()); } } |
