moveSelectedBy method
Moves the selected object by dx, dy.
Implementation
bool moveSelectedBy(double dx, double dy) {
if (_selectedObjectIds.isEmpty) return false;
_remember();
final changed = <CanvasObject>[];
for (final id in _selectedObjectIds) {
final index = _objects.indexWhere((object) => object.id == id);
if (index < 0) continue;
if (_objects[index].locked) continue;
final moved = _constrainObject(
_objects[index],
_moveObject(_objects[index], dx, dy),
moving: true,
);
_objects[index] = moved;
changed.add(moved);
}
if (changed.isEmpty) return false;
_snapSelectionIfNeeded();
changed
..clear()
..addAll(selectedObjects);
render();
onMove?.call(List.unmodifiable(changed));
_emitChange();
return true;
}