move: Fix window offset
This commit is contained in:
parent
ae34a0da62
commit
a066edab0b
2 changed files with 14 additions and 12 deletions
|
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue