mirror of
https://github.com/konvajs/konva.git
synced 2025-06-27 17:09:44 +08:00
fixed drag and drop bug related to drag constraints and positioned containers. Just needed to move the drag constraint logic after the matrix unravel
This commit is contained in:
parent
bdafb3eb25
commit
313c6a1541
23
dist/kinetic-core.js
vendored
23
dist/kinetic-core.js
vendored
@ -1676,14 +1676,6 @@ Kinetic.Stage.prototype = {
|
||||
newNodePos.y = db.bottom;
|
||||
}
|
||||
|
||||
// constraint overrides
|
||||
if(dc === 'horizontal') {
|
||||
newNodePos.y = node.y;
|
||||
}
|
||||
else if(dc === 'vertical') {
|
||||
newNodePos.x = node.x;
|
||||
}
|
||||
|
||||
/*
|
||||
* save rotation and scale and then
|
||||
* remove them from the transform
|
||||
@ -1703,9 +1695,20 @@ Kinetic.Stage.prototype = {
|
||||
var it = node.getAbsoluteTransform();
|
||||
it.invert();
|
||||
it.translate(newNodePos.x, newNodePos.y);
|
||||
newNodePos = {
|
||||
x: node.x + it.getTranslation().x,
|
||||
y: node.y + it.getTranslation().y
|
||||
};
|
||||
|
||||
node.x += it.getTranslation().x;
|
||||
node.y += it.getTranslation().y;
|
||||
// constraint overrides
|
||||
if(dc === 'horizontal') {
|
||||
newNodePos.y = node.y;
|
||||
}
|
||||
else if(dc === 'vertical') {
|
||||
newNodePos.x = node.x;
|
||||
}
|
||||
|
||||
node.setPosition(newNodePos.x, newNodePos.y);
|
||||
|
||||
// restore rotation and scale
|
||||
node.rotate(rot);
|
||||
|
2
dist/kinetic-core.min.js
vendored
2
dist/kinetic-core.min.js
vendored
File diff suppressed because one or more lines are too long
23
src/Stage.js
23
src/Stage.js
@ -646,14 +646,6 @@ Kinetic.Stage.prototype = {
|
||||
newNodePos.y = db.bottom;
|
||||
}
|
||||
|
||||
// constraint overrides
|
||||
if(dc === 'horizontal') {
|
||||
newNodePos.y = node.y;
|
||||
}
|
||||
else if(dc === 'vertical') {
|
||||
newNodePos.x = node.x;
|
||||
}
|
||||
|
||||
/*
|
||||
* save rotation and scale and then
|
||||
* remove them from the transform
|
||||
@ -673,9 +665,20 @@ Kinetic.Stage.prototype = {
|
||||
var it = node.getAbsoluteTransform();
|
||||
it.invert();
|
||||
it.translate(newNodePos.x, newNodePos.y);
|
||||
newNodePos = {
|
||||
x: node.x + it.getTranslation().x,
|
||||
y: node.y + it.getTranslation().y
|
||||
};
|
||||
|
||||
node.x += it.getTranslation().x;
|
||||
node.y += it.getTranslation().y;
|
||||
// constraint overrides
|
||||
if(dc === 'horizontal') {
|
||||
newNodePos.y = node.y;
|
||||
}
|
||||
else if(dc === 'vertical') {
|
||||
newNodePos.x = node.x;
|
||||
}
|
||||
|
||||
node.setPosition(newNodePos.x, newNodePos.y);
|
||||
|
||||
// restore rotation and scale
|
||||
node.rotate(rot);
|
||||
|
@ -1264,13 +1264,17 @@ Test.prototype.tests = {
|
||||
layer.add(circle2);
|
||||
stage.add(layer);
|
||||
},
|
||||
'DRAG AND DROP - drag and drop constrianed horiztonally': function(containerId) {
|
||||
'DRAG AND DROP - drag and drop constrianed horiztontally inside positioned group': function(containerId) {
|
||||
var stage = new Kinetic.Stage({
|
||||
container: containerId,
|
||||
width: 578,
|
||||
height: 200
|
||||
});
|
||||
var layer = new Kinetic.Layer();
|
||||
var group = new Kinetic.Group({
|
||||
x: 0,
|
||||
y: 10
|
||||
});
|
||||
var circle = new Kinetic.Circle({
|
||||
x: stage.width / 2,
|
||||
y: stage.height / 2,
|
||||
@ -1282,7 +1286,8 @@ Test.prototype.tests = {
|
||||
dragConstraint: 'horizontal'
|
||||
});
|
||||
|
||||
layer.add(circle);
|
||||
group.add(circle);
|
||||
layer.add(group);
|
||||
stage.add(layer);
|
||||
},
|
||||
'DRAG AND DROP - drag and drop constrianed vertically': function(containerId) {
|
||||
|
Loading…
Reference in New Issue
Block a user