mirror of
https://github.com/konvajs/konva.git
synced 2025-10-15 12:34:52 +08:00
Merge branch 'fix-DblClick-after-dragging' of git://github.com/kzhdev/KineticJS into kzhdev-fix-DblClick-after-dragging
Conflicts: test/unit/Stage-test.js
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
// properties
|
// properties
|
||||||
anim: new Kinetic.Animation(),
|
anim: new Kinetic.Animation(),
|
||||||
isDragging: false,
|
isDragging: false,
|
||||||
|
justDragged: false,
|
||||||
offset: {
|
offset: {
|
||||||
x: 0,
|
x: 0,
|
||||||
y: 0
|
y: 0
|
||||||
@@ -60,6 +61,7 @@
|
|||||||
// operation actually started.
|
// operation actually started.
|
||||||
if(dd.isDragging) {
|
if(dd.isDragging) {
|
||||||
dd.isDragging = false;
|
dd.isDragging = false;
|
||||||
|
dd.justDragged = true;
|
||||||
Kinetic.listenClickTap = false;
|
Kinetic.listenClickTap = false;
|
||||||
|
|
||||||
if (evt) {
|
if (evt) {
|
||||||
|
11
src/Stage.js
11
src/Stage.js
@@ -460,17 +460,20 @@
|
|||||||
_mouseup: function(evt) {
|
_mouseup: function(evt) {
|
||||||
if (!Kinetic.UA.mobile) {
|
if (!Kinetic.UA.mobile) {
|
||||||
this._setPointerPosition(evt);
|
this._setPointerPosition(evt);
|
||||||
var that = this,
|
var shape = this.getIntersection(this.getPointerPosition()),
|
||||||
shape = this.getIntersection(this.getPointerPosition()),
|
|
||||||
clickStartShape = this.clickStartShape,
|
clickStartShape = this.clickStartShape,
|
||||||
fireDblClick = false;
|
fireDblClick = false,
|
||||||
|
dd = Kinetic.DD;
|
||||||
|
|
||||||
if(Kinetic.inDblClickWindow) {
|
if(Kinetic.inDblClickWindow) {
|
||||||
fireDblClick = true;
|
fireDblClick = true;
|
||||||
Kinetic.inDblClickWindow = false;
|
Kinetic.inDblClickWindow = false;
|
||||||
}
|
}
|
||||||
else {
|
// don't set inDblClickWindow after dragging
|
||||||
|
else if (!dd || !dd.justDragged) {
|
||||||
Kinetic.inDblClickWindow = true;
|
Kinetic.inDblClickWindow = true;
|
||||||
|
} else if (dd) {
|
||||||
|
dd.justDragged = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
|
@@ -450,5 +450,71 @@ suite('Stage', function() {
|
|||||||
stage.add(layer1, layer2, layer3);
|
stage.add(layer1, layer2, layer3);
|
||||||
assert.equal(stage.getLayers().length, 3, 'stage has exactly three layers');
|
assert.equal(stage.getLayers().length, 3, 'stage has exactly three layers');
|
||||||
});
|
});
|
||||||
|
// ======================================================
|
||||||
|
test('test drag and click', function() {
|
||||||
|
var stage = addStage();
|
||||||
|
var layer = new Kinetic.Layer();
|
||||||
|
var rect = new Kinetic.Rect({
|
||||||
|
x: 50,
|
||||||
|
y: 50,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
fill: 'red',
|
||||||
|
draggable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
layer.add(rect);
|
||||||
|
stage.add(layer);
|
||||||
|
|
||||||
|
rect.on('dblclick', function() {
|
||||||
|
assert(false, 'double click fired');
|
||||||
|
});
|
||||||
|
|
||||||
|
var top = stage.content.getBoundingClientRect().top,
|
||||||
|
clientY = 60 + top;
|
||||||
|
|
||||||
|
// simulate dragging
|
||||||
|
stage._mousedown({
|
||||||
|
clientX: 60,
|
||||||
|
clientY: clientY
|
||||||
|
});
|
||||||
|
|
||||||
|
stage._mousemove({
|
||||||
|
clientX: 61,
|
||||||
|
clientY: clientY
|
||||||
|
});
|
||||||
|
|
||||||
|
stage._mousemove({
|
||||||
|
clientX: 62,
|
||||||
|
clientY: clientY
|
||||||
|
});
|
||||||
|
|
||||||
|
stage._mousemove({
|
||||||
|
clientX: 63,
|
||||||
|
clientY: clientY
|
||||||
|
});
|
||||||
|
|
||||||
|
stage._mousemove({
|
||||||
|
clientX: 64,
|
||||||
|
clientY: clientY
|
||||||
|
});
|
||||||
|
|
||||||
|
Kinetic.DD._endDragBefore();
|
||||||
|
stage._mouseup({
|
||||||
|
clientX: 65,
|
||||||
|
clientY: clientY
|
||||||
|
});
|
||||||
|
Kinetic.DD._endDragAfter({dragEndNode:rect});
|
||||||
|
|
||||||
|
// simulate click
|
||||||
|
stage._mousedown({
|
||||||
|
clientX: 66,
|
||||||
|
clientY: clientY
|
||||||
|
});
|
||||||
|
|
||||||
|
stage._mouseup({
|
||||||
|
clientX: 66,
|
||||||
|
clientY: clientY
|
||||||
|
});
|
||||||
|
})
|
||||||
});
|
});
|
Reference in New Issue
Block a user