MDL-69955 qtype_ddimageortext: drop zone disappear in special case

This commit is contained in:
Huong Nguyen 2020-11-02 09:54:22 +07:00
parent 2444c9d9be
commit d67bcd6b9a
3 changed files with 27 additions and 19 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -364,10 +364,12 @@ define(['jquery', 'core/dragdrop', 'core/key_codes'], function($, dragDrop, keys
* @param {jQuery} drag the item being moved.
*/
DragDropOntoImageQuestion.prototype.dragMove = function(pageX, pageY, drag) {
var thisQ = this;
var thisQ = this,
highlighted = false;
this.getRoot().find('.dropzone.group' + this.getGroup(drag)).each(function(i, dropNode) {
var drop = $(dropNode);
if (thisQ.isPointInDrop(pageX, pageY, drop)) {
if (thisQ.isPointInDrop(pageX, pageY, drop) && !highlighted) {
highlighted = true;
drop.addClass('valid-drag-over-drop');
} else {
drop.removeClass('valid-drag-over-drop');
@ -375,7 +377,8 @@ define(['jquery', 'core/dragdrop', 'core/key_codes'], function($, dragDrop, keys
});
this.getRoot().find('.draghome.placed.group' + this.getGroup(drag)).not('.beingdragged').each(function(i, dropNode) {
var drop = $(dropNode);
if (thisQ.isPointInDrop(pageX, pageY, drop)) {
if (thisQ.isPointInDrop(pageX, pageY, drop) && !highlighted) {
highlighted = true;
drop.addClass('valid-drag-over-drop');
} else {
drop.removeClass('valid-drag-over-drop');
@ -394,6 +397,8 @@ define(['jquery', 'core/dragdrop', 'core/key_codes'], function($, dragDrop, keys
var thisQ = this,
root = this.getRoot(),
placed = false;
// Looking for drag that was dropped on a dropzone.
root.find('.dropzone.group' + this.getGroup(drag)).each(function(i, dropNode) {
var drop = $(dropNode);
if (!thisQ.isPointInDrop(pageX, pageY, drop)) {
@ -408,6 +413,8 @@ define(['jquery', 'core/dragdrop', 'core/key_codes'], function($, dragDrop, keys
return false; // Stop the each() here.
});
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)) {
@ -423,6 +430,7 @@ define(['jquery', 'core/dragdrop', 'core/key_codes'], function($, dragDrop, keys
placed = true;
return false; // Stop the each() here.
});
}
if (!placed) {
this.sendDragHome(drag);