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(),
serial,
}));
pn.node_restack();
pn.node_seat_state().add_pointer_grab(seat);
seat.handle_node_button(pn, time_usec, button, state, serial);
}

View file

@ -94,9 +94,11 @@ impl ToolOwner for DefaultToolOwner {
if state == ToolButtonState::Released {
return;
}
let node = tool.node.get();
node.node_restack();
let owner = Rc::new(GrabToolOwner {
buttons: Default::default(),
node: tool.node.get(),
node,
});
tool.tool_owner.owner.set(owner.clone());
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) {
let node = seat.state.node_at(x.round_down(), y.round_down());
node.node.node_seat_state().touch_begin(seat);
node.node.node_restack();
let owner = Rc::new(GrabTouchOwner {
node: node.node,
down_ids: Default::default(),

View file

@ -988,3 +988,13 @@ impl PinnedNode for FloatNode {
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();
}
}
}