@@ -744,51 +744,45 @@ private void configDragAndDrop(
744744 sourceModel .grid .setRowsDraggable (true );
745745 sourceModel .grid .addDragStartListener (
746746 event -> {
747- draggedGrid = null ;
747+ draggedGrid = sourceModel . grid ;
748748
749749 if (!(sourceModel .grid .getSelectionModel () instanceof GridNoneSelectionModel )) {
750750 draggedItems .addAll (event .getDraggedItems ());
751751 }
752752
753753 sourceModel .grid .setDropMode (sourceModel .allowReordering ? GridDropMode .BETWEEN : null );
754- targetModel .grid .setDropMode (GridDropMode .ON_GRID );
754+ targetModel .grid .setDropMode (targetModel . allowReordering ? GridDropMode . BETWEEN : GridDropMode .ON_GRID );
755755 });
756756
757757 sourceModel .grid .addDragEndListener (
758758 event -> {
759- if (targetModel .droppedInsideGrid && sourceModel .grid == draggedGrid ) {
760-
761- if (draggedGrid == null ) {
762- draggedItems .clear ();
763- return ;
764- }
759+ if (targetModel .droppedInsideGrid
760+ && sourceModel .grid == draggedGrid
761+ && !draggedItems .isEmpty ()) {
765762
766763 final ListDataProvider <T > dragGridSourceDataProvider = sourceModel .getDataProvider ();
767764
768765 dragGridSourceDataProvider .getItems ().removeAll (draggedItems );
769766 dragGridSourceDataProvider .refreshAll ();
770767
771768 targetModel .droppedInsideGrid = false ;
772- draggedGrid = null ;
773769
774770 draggedItems .clear ();
775771 sourceModel .grid .deselectAll ();
776772
777773 sourceModel .grid .setDropMode (null );
778774 targetModel .grid .setDropMode (null );
779- } else {
780- draggedItems .clear ();
781775 }
776+ draggedItems .clear ();
782777 });
783778
784779 targetModel .grid .addDropListener (
785780 event -> {
786- draggedGrid = sourceModel .grid ;
787-
788- targetModel .droppedInsideGrid = true ;
789- final ListDataProvider <T > dragGridTargetDataProvider = targetModel .getDataProvider ();
790- dragGridTargetDataProvider .getItems ().addAll (draggedItems );
791- dragGridTargetDataProvider .refreshAll ();
781+ if (!draggedItems .isEmpty ()) {
782+ targetModel .droppedInsideGrid = true ;
783+ T dropOverItem = event .getDropTargetItem ().orElse (null );
784+ addItems (targetModel , draggedItems , dropOverItem , event .getDropLocation ());
785+ }
792786 });
793787
794788 sourceModel .grid .addDropListener (event -> {
0 commit comments