diff options
| author | Duncan Overbruck <mail@duncano.de> | 2025-05-23 07:24:24 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-23 05:24:24 +0000 |
| commit | 7fdb918cd04076b173a38f026dc5c27ac830b028 (patch) | |
| tree | 61e1f0fc9a3e7b7ddefd8c5d60dc77e29c2bbdb0 | |
| parent | 8347cc20dc87049b398ab655565d468c5c4427a0 (diff) | |
| download | niri-7fdb918cd04076b173a38f026dc5c27ac830b028.tar.gz niri-7fdb918cd04076b173a38f026dc5c27ac830b028.tar.bz2 niri-7fdb918cd04076b173a38f026dc5c27ac830b028.zip | |
input: do not revert fully invisible cursor to hidden (#1650)
* input: do not force redraw to hide an already hidden cursor
* more
---------
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
| -rw-r--r-- | src/input/mod.rs | 6 | ||||
| -rw-r--r-- | src/niri.rs | 9 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/input/mod.rs b/src/input/mod.rs index 1b51895c..0c6cf8f3 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -472,6 +472,12 @@ impl State { } fn hide_cursor_if_needed(&mut self) { + // If the pointer is already invisible, don't reset it back to Hidden causing one frame + // of hover. + if !self.niri.pointer_visibility.is_visible() { + return; + } + if !self.niri.config.borrow().cursor.hide_when_typing { return; } diff --git a/src/niri.rs b/src/niri.rs index 74632382..79d20639 100644 --- a/src/niri.rs +++ b/src/niri.rs @@ -5986,8 +5986,13 @@ impl Niri { .event_loop .insert_source(timer, move |_, _, state| { state.niri.pointer_inactivity_timer = None; - state.niri.pointer_visibility = PointerVisibility::Hidden; - state.niri.queue_redraw_all(); + + // If the pointer is already invisible, don't reset it back to Hidden causing one + // frame of hover. + if state.niri.pointer_visibility.is_visible() { + state.niri.pointer_visibility = PointerVisibility::Hidden; + state.niri.queue_redraw_all(); + } TimeoutAction::Drop }) |
