aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/input/mod.rs6
-rw-r--r--src/niri.rs9
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
})