From fa7926f7c1a1f7cbffb04d52ac021c9a216d61e7 Mon Sep 17 00:00:00 2001 From: Victoria Brekenfeld Date: Wed, 27 Mar 2024 18:35:04 +0100 Subject: [PATCH] input: Move window anywhere with Super-key --- src/input/mod.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/input/mod.rs b/src/input/mod.rs index 197a0640..f87cadd9 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -9,7 +9,7 @@ use crate::{ target::{KeyboardFocusTarget, PointerFocusTarget}, FocusDirection, }, - grabs::{ResizeEdge, SeatMenuGrabState, SeatMoveGrabState}, + grabs::{ReleaseMode, ResizeEdge, SeatMenuGrabState, SeatMoveGrabState}, layout::{ floating::ResizeGrabMarker, tiling::{SwapWindowGrab, TilingLayout}, @@ -982,7 +982,25 @@ impl State { if let Some(target) = self.common.shell.element_under(pos, &output) { - under = Some(target); + if seat.get_keyboard().unwrap().modifier_state().logo { + if let Some(surface) = target.toplevel() { + let seat_clone = seat.clone(); + self.common.event_loop_handle.insert_idle( + move |state| { + Shell::move_request( + state, + &surface, + &seat_clone, + serial, + ReleaseMode::NoMouseButtons, + false, + ) + }, + ); + } + } else { + under = Some(target); + } } else { let layers = layer_map_for_output(&output); if let Some(layer) = layers