aboutsummaryrefslogtreecommitdiff
path: root/src/input
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2025-05-09 09:18:22 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2025-05-09 10:28:20 +0300
commitdfc42b9d82c8a29ca415dc77c211a2e9c69ae906 (patch)
treec20d87a581a517cf7b9f5fd0ffd70da281a3868e /src/input
parente2b9838d8944c0a2e30da7ba4c1c69dd25abc243 (diff)
downloadniri-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.rs82
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());
}
}