Merge branch 'MDL-69930-master' of https://github.com/HuongNV13/moodle
authorJun Pataleta <jun@moodle.com>
Tue, 10 Nov 2020 06:11:54 +0000 (14:11 +0800)
committerJun Pataleta <jun@moodle.com>
Tue, 10 Nov 2020 06:11:54 +0000 (14:11 +0800)
# Conflicts:
# question/type/ddimageortext/amd/build/question.min.js
# question/type/ddimageortext/amd/build/question.min.js.map
# question/type/ddimageortext/amd/src/question.js

1  2 
question/type/ddimageortext/amd/build/question.min.js
question/type/ddimageortext/amd/build/question.min.js.map
question/type/ddimageortext/amd/src/question.js

@@@ -377,8 -375,7 +377,8 @@@ define(['jquery', 'core/dragdrop', 'cor
          });
          this.getRoot().find('.draghome.placed.group' + this.getGroup(drag)).not('.beingdragged').each(function(i, dropNode) {
              var drop = $(dropNode);
-             if (thisQ.isPointInDrop(pageX, pageY, drop) && !highlighted) {
 -            if (thisQ.isPointInDrop(pageX, pageY, drop) && !thisQ.isDragSameAsDrop(drag, drop)) {
++            if (thisQ.isPointInDrop(pageX, pageY, drop) && !highlighted && !thisQ.isDragSameAsDrop(drag, drop)) {
 +                highlighted = true;
                  drop.addClass('valid-drag-over-drop');
              } else {
                  drop.removeClass('valid-drag-over-drop');
              return false; // Stop the each() here.
          });
  
 -        root.find('.draghome.placed.group' + this.getGroup(drag)).not('.beingdragged').each(function(i, placedNode) {
 -            var placedDrag = $(placedNode);
 -            if (!thisQ.isPointInDrop(pageX, pageY, placedDrag) || thisQ.isDragSameAsDrop(drag, placedDrag)) {
 -                // Not this placed drag.
 -                return true;
 -            }
 +        if (!placed) {
 +            // Looking for drag that was dropped on a placed drag.
 +            root.find('.draghome.placed.group' + this.getGroup(drag)).not('.beingdragged').each(function(i, placedNode) {
 +                var placedDrag = $(placedNode);
-                 if (!thisQ.isPointInDrop(pageX, pageY, placedDrag)) {
++                if (!thisQ.isPointInDrop(pageX, pageY, placedDrag) || thisQ.isDragSameAsDrop(drag, placedDrag)) {
 +                    // Not this placed drag.
 +                    return true;
 +                }
  
 -            // Now put this drag into the drop.
 -            placedDrag.removeClass('valid-drag-over-drop');
 -            var currentPlace = thisQ.getClassnameNumericSuffix(placedDrag, 'inplace');
 -            var drop = thisQ.getDrop(drag, currentPlace);
 -            thisQ.sendDragToDrop(drag, drop);
 -            placed = true;
 -            return false; // Stop the each() here.
 -        });
 +                // Now put this drag into the drop.
 +                placedDrag.removeClass('valid-drag-over-drop');
 +                var currentPlace = thisQ.getClassnameNumericSuffix(placedDrag, 'inplace');
 +                var drop = thisQ.getDrop(drag, currentPlace);
 +                thisQ.sendDragToDrop(drag, drop);
 +                placed = true;
 +                return false; // Stop the each() here.
 +            });
 +        }
  
          if (!placed) {
              this.sendDragHome(drag);