diff --git a/DragDrop/src/com/allen_sauer/gwt/dnd/client/drop/GridConstrainedDropController.java b/DragDrop/src/com/allen_sauer/gwt/dnd/client/drop/GridConstrainedDropController.java index bcf1a9a3..dabfbd8c 100644 --- a/DragDrop/src/com/allen_sauer/gwt/dnd/client/drop/GridConstrainedDropController.java +++ b/DragDrop/src/com/allen_sauer/gwt/dnd/client/drop/GridConstrainedDropController.java @@ -46,13 +46,16 @@ public void drop(Widget widget, int left, int top) { @Override public void onMove(DragContext context) { super.onMove(context); + int scrollLeft = context.draggable.getParent() != null ? Math.round(context.draggable.getParent().getElement().getScrollLeft()) : 0; + int scrollTop = context.draggable.getParent() != null ? Math.round(context.draggable.getParent().getElement().getScrollTop()) : 0; + for (Draggable draggable : draggableList) { draggable.desiredX = context.desiredDraggableX - dropTargetOffsetX + draggable.relativeX; draggable.desiredY = context.desiredDraggableY - dropTargetOffsetY + draggable.relativeY; draggable.desiredX = Math.max(0, Math.min(draggable.desiredX, dropTargetClientWidth - - draggable.offsetWidth)); + - draggable.offsetWidth + scrollLeft)); draggable.desiredY = Math.max(0, Math.min(draggable.desiredY, dropTargetClientHeight - - draggable.offsetHeight)); + - draggable.offsetHeight + scrollTop)); draggable.desiredX = Math.round((float) draggable.desiredX / gridX) * gridX; draggable.desiredY = Math.round((float) draggable.desiredY / gridY) * gridY; dropTarget.add(draggable.positioner, draggable.desiredX, draggable.desiredY);