move: Fix window offset

This commit is contained in:
Victoria Brekenfeld 2022-11-22 15:48:36 +01:00
parent ae34a0da62
commit a066edab0b
2 changed files with 14 additions and 12 deletions

View file

@ -33,7 +33,6 @@ pub struct MoveGrabState {
window: CosmicMapped, window: CosmicMapped,
initial_cursor_location: Point<f64, Logical>, initial_cursor_location: Point<f64, Logical>,
initial_window_location: Point<i32, Logical>, initial_window_location: Point<i32, Logical>,
initial_output_location: Point<i32, Logical>,
} }
impl MoveGrabState { impl MoveGrabState {
@ -47,8 +46,7 @@ impl MoveGrabState {
{ {
let cursor_at = seat.get_pointer().unwrap().current_location(); let cursor_at = seat.get_pointer().unwrap().current_location();
let delta = cursor_at - self.initial_cursor_location; let delta = cursor_at - self.initial_cursor_location;
let location = let location = self.initial_window_location.to_f64() + delta;
self.initial_output_location.to_f64() + self.initial_window_location.to_f64() + delta;
let mut window_geo = self.window.geometry(); let mut window_geo = self.window.geometry();
window_geo.loc += location.to_i32_round(); window_geo.loc += location.to_i32_round();
@ -120,13 +118,11 @@ impl MoveSurfaceGrab {
seat: &Seat<State>, seat: &Seat<State>,
initial_cursor_location: Point<f64, Logical>, initial_cursor_location: Point<f64, Logical>,
initial_window_location: Point<i32, Logical>, initial_window_location: Point<i32, Logical>,
initial_output_location: Point<i32, Logical>,
) -> MoveSurfaceGrab { ) -> MoveSurfaceGrab {
let grab_state = MoveGrabState { let grab_state = MoveGrabState {
window: window.clone(), window: window.clone(),
initial_cursor_location, initial_cursor_location,
initial_window_location, initial_window_location,
initial_output_location,
}; };
*seat *seat
@ -160,11 +156,9 @@ impl MoveSurfaceGrab {
{ {
if grab_state.window.alive() { if grab_state.window.alive() {
let delta = handle.current_location() - grab_state.initial_cursor_location; let delta = handle.current_location() - grab_state.initial_cursor_location;
let window_location = (grab_state.initial_window_location.to_f64() let window_location = (grab_state.initial_window_location.to_f64() + delta)
+ grab_state.initial_output_location.to_f64() .to_i32_round()
- output.geometry().loc.to_f64() - output.geometry().loc;
+ delta)
.to_i32_round();
let workspace_handle = state.common.shell.active_space(&output).handle; let workspace_handle = state.common.shell.active_space(&output).handle;
for (window, _) in grab_state.window.windows() { for (window, _) in grab_state.window.windows() {
@ -180,12 +174,21 @@ impl MoveSurfaceGrab {
.toplevel_enter_output(&window, &output); .toplevel_enter_output(&window, &output);
} }
let offset = state
.common
.shell
.active_space(&output)
.floating_layer
.space
.output_geometry(&output)
.unwrap()
.loc;
state state
.common .common
.shell .shell
.active_space_mut(&output) .active_space_mut(&output)
.floating_layer .floating_layer
.map_internal(grab_state.window, &output, Some(window_location)); .map_internal(grab_state.window, &output, Some(window_location + offset));
} }
} }

View file

@ -354,7 +354,6 @@ impl Workspace {
seat, seat,
pos, pos,
initial_window_location, initial_window_location,
output.geometry().loc,
)) ))
} else { } else {
None // TODO None // TODO