diff --git a/src/config/handler.rs b/src/config/handler.rs
index c7610695..bdeb251d 100644
--- a/src/config/handler.rs
+++ b/src/config/handler.rs
@@ -354,6 +354,17 @@ impl ConfigProxyHandler {
if x < 0 || y < 0 || x > MAX_EXTENTS || y > MAX_EXTENTS {
return Err(CphError::InvalidConnectorPosition(x, y));
}
+ let old_pos = connector.node.global.pos.get();
+ let seats = self.state.globals.seats.lock();
+ for seat in seats.values() {
+ if seat.get_output().id == connector.node.id {
+ let seat_pos = seat.position();
+ seat.set_position(
+ seat_pos.0.round_down() + x - old_pos.x1(),
+ seat_pos.1.round_down() + y - old_pos.y1(),
+ );
+ }
+ }
connector.node.set_position(x, y);
Ok(())
}
diff --git a/src/ifs/wl_seat.rs b/src/ifs/wl_seat.rs
index be69a086..c27d5fd2 100644
--- a/src/ifs/wl_seat.rs
+++ b/src/ifs/wl_seat.rs
@@ -132,6 +132,7 @@ pub struct WlSeatGlobal {
queue_link: Cell