1
0
Fork 0
forked from wry/wry

tree: restack containing float when node is activated

This commit is contained in:
Julian Orth 2025-07-16 21:36:45 +02:00
parent d038df28f7
commit afe2022953
4 changed files with 15 additions and 1 deletions

View file

@ -338,6 +338,7 @@ impl<T: SimplePointerOwnerUsecase> PointerOwner for SimplePointerOwner<T> {
node: pn.clone(), node: pn.clone(),
serial, serial,
})); }));
pn.node_restack();
pn.node_seat_state().add_pointer_grab(seat); pn.node_seat_state().add_pointer_grab(seat);
seat.handle_node_button(pn, time_usec, button, state, serial); seat.handle_node_button(pn, time_usec, button, state, serial);
} }

View file

@ -94,9 +94,11 @@ impl ToolOwner for DefaultToolOwner {
if state == ToolButtonState::Released { if state == ToolButtonState::Released {
return; return;
} }
let node = tool.node.get();
node.node_restack();
let owner = Rc::new(GrabToolOwner { let owner = Rc::new(GrabToolOwner {
buttons: Default::default(), buttons: Default::default(),
node: tool.node.get(), node,
}); });
tool.tool_owner.owner.set(owner.clone()); tool.tool_owner.owner.set(owner.clone());
owner.button(tool, time_usec, button, state); owner.button(tool, time_usec, button, state);

View file

@ -71,6 +71,7 @@ impl TouchOwner for DefaultTouchOwner {
fn down(&self, seat: &Rc<WlSeatGlobal>, time_usec: u64, id: i32, x: Fixed, y: Fixed) { fn down(&self, seat: &Rc<WlSeatGlobal>, time_usec: u64, id: i32, x: Fixed, y: Fixed) {
let node = seat.state.node_at(x.round_down(), y.round_down()); let node = seat.state.node_at(x.round_down(), y.round_down());
node.node.node_seat_state().touch_begin(seat); node.node.node_seat_state().touch_begin(seat);
node.node.node_restack();
let owner = Rc::new(GrabTouchOwner { let owner = Rc::new(GrabTouchOwner {
node: node.node, node: node.node,
down_ids: Default::default(), down_ids: Default::default(),

View file

@ -988,3 +988,13 @@ impl PinnedNode for FloatNode {
self.set_workspace_(workspace, false, update_visible); self.set_workspace_(workspace, false, update_visible);
} }
} }
impl dyn Node {
pub fn node_restack(self: &Rc<Self>) {
if let Some(tl) = self.clone().node_toplevel()
&& let Some(float) = tl.tl_data().float.get()
{
float.restack();
}
}
}