aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDuncan Overbruck <mail@duncano.de>2025-05-23 07:24:24 +0200
committerGitHub <noreply@github.com>2025-05-23 05:24:24 +0000
commit7fdb918cd04076b173a38f026dc5c27ac830b028 (patch)
tree61e1f0fc9a3e7b7ddefd8c5d60dc77e29c2bbdb0 /src
parent8347cc20dc87049b398ab655565d468c5c4427a0 (diff)
downloadniri-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>
Diffstat (limited to 'src')
-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
})