mirror of
https://github.com/konvajs/konva.git
synced 2025-07-15 10:47:41 +08:00
fixed edge case when setting draggable=false on dragend
This commit is contained in:
parent
d0148a50ac
commit
3a6a55d1cc
@ -65,9 +65,11 @@
|
||||
this.moveTo(dd.topLayer);
|
||||
dd.topLayer.draw();
|
||||
// if we don't delay the prev parent redraw, dd will
|
||||
// flicker on mobile devices
|
||||
// flicker on mobile devices
|
||||
setTimeout(function() {
|
||||
dd.prevParent.getLayer().draw();
|
||||
if(dd.prevParent) {
|
||||
dd.prevParent.getLayer().draw();
|
||||
}
|
||||
}, 0);
|
||||
}
|
||||
|
||||
@ -115,7 +117,7 @@
|
||||
node.draw();
|
||||
}
|
||||
else {
|
||||
if(nodeType === 'Group' || nodeType === 'Shape') {
|
||||
if((nodeType === 'Group' || nodeType === 'Shape') && dd.prevParent) {
|
||||
node.moveTo(dd.prevParent);
|
||||
dd.topLayer.remove();
|
||||
dd.prevParent = null;
|
||||
@ -125,7 +127,9 @@
|
||||
node.getLayer().draw();
|
||||
}
|
||||
|
||||
// handle dragend
|
||||
// only fire dragend event if the drag and drop
|
||||
// operation actually started. This can be detected by
|
||||
// checking dd.moving
|
||||
if(dd.moving) {
|
||||
dd.moving = false;
|
||||
node._handleEvent('dragend', evt);
|
||||
|
@ -77,6 +77,8 @@ Test.Modules.DD = {
|
||||
|
||||
circle.on('dragend', function() {
|
||||
dragEnd = true;
|
||||
// test set draggable false after drag end
|
||||
this.setDraggable(false);
|
||||
});
|
||||
warn(layer.toDataURL() === dataUrls['drag circle before'], 'start data url is incorrect');
|
||||
/*
|
||||
@ -109,6 +111,7 @@ Test.Modules.DD = {
|
||||
test(dragStart, 'dragstart event was not triggered');
|
||||
test(dragMove, 'dragmove event was not triggered');
|
||||
test(dragEnd, 'dragend event was not triggered');
|
||||
test(!circle.getDraggable(), 'circle should no longer be draggable');
|
||||
|
||||
warn(layer.toDataURL() === dataUrls['drag circle after'], 'end data url is incorrect');
|
||||
},
|
||||
|
Loading…
Reference in New Issue
Block a user