1
0
Fork 0
forked from wry/wry

pointer_owner: give context immediately instead of waiting for refresh

This commit is contained in:
kossLAN 2026-06-08 21:16:10 -04:00
parent c1b2c7f17c
commit 22f1d92877
No known key found for this signature in database
3 changed files with 9 additions and 4 deletions

View file

@ -32,6 +32,9 @@ impl JayPointerRequestHandler for JayPointer {
Some(c) => c, Some(c) => c,
_ => return Err(JayPointerError::OutOfBounds), _ => return Err(JayPointerError::OutOfBounds),
}; };
if self.seat.pointer_node().and_then(|n| n.node_client_id()) != Some(self.client.id) {
self.seat.refresh_pointer_stack();
}
let pointer_node = match self.seat.pointer_node() { let pointer_node = match self.seat.pointer_node() {
Some(n) => n, Some(n) => n,
_ => { _ => {

View file

@ -926,6 +926,11 @@ impl WlSeatGlobal {
self.pointer_owner.select_workspace(self, selector); self.pointer_owner.select_workspace(self, selector);
} }
pub fn refresh_pointer_stack(self: &Rc<Self>) {
self.pointer_stack_modified.set(true);
self.apply_changes();
}
pub fn set_focus_follows_mouse(&self, focus_follows_mouse: bool) { pub fn set_focus_follows_mouse(&self, focus_follows_mouse: bool) {
self.focus_follows_mouse.set(focus_follows_mouse); self.focus_follows_mouse.set(focus_follows_mouse);
} }

View file

@ -183,11 +183,8 @@ impl PointerOwnerHolder {
fn select_element(&self, seat: &Rc<WlSeatGlobal>, usecase: impl SimplePointerOwnerUsecase) { fn select_element(&self, seat: &Rc<WlSeatGlobal>, usecase: impl SimplePointerOwnerUsecase) {
self.revert_to_default(seat); self.revert_to_default(seat);
if let Some(node) = seat.pointer_stack.borrow().last() {
usecase.node_focus(seat, node);
}
self.owner.set(Rc::new(SimplePointerOwner { usecase })); self.owner.set(Rc::new(SimplePointerOwner { usecase }));
seat.trigger_tree_changed(false); seat.refresh_pointer_stack();
} }
pub fn select_toplevel(&self, seat: &Rc<WlSeatGlobal>, selector: impl ToplevelSelector) { pub fn select_toplevel(&self, seat: &Rc<WlSeatGlobal>, selector: impl ToplevelSelector) {