fix deatach

This commit is contained in:
Anton Lavrenov 2020-04-23 08:59:19 -05:00
parent b8a3a5af19
commit f58635bbf6
4 changed files with 113 additions and 1355 deletions

View File

@ -5,6 +5,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
## Not released: ## Not released:
* Deatach fixes for `Konva.Transformer`
## 5.0.1 - 2020-04-22 ## 5.0.1 - 2020-04-22

1402
konva.js

File diff suppressed because it is too large Load Diff

View File

@ -462,10 +462,11 @@ export class Transformer extends Group {
* transformer.detach(); * transformer.detach();
*/ */
detach() { detach() {
if (this.getNode()) { // remove events
this.getNode().off('.' + EVENTS_NAME); this._nodes.forEach(node => {
this._nodes = []; node.off('.' + EVENTS_NAME);
} });
this._nodes = [];
this._resetTransformCache(); this._resetTransformCache();
} }
_resetTransformCache() { _resetTransformCache() {

View File

@ -238,7 +238,7 @@ suite('Transformer', function() {
layer.draw(); layer.draw();
}); });
test('try to resize on draggable stage', function() { test('try to resize in draggable stage', function() {
var stage = addStage(); var stage = addStage();
stage.draggable(true); stage.draggable(true);
var layer = new Konva.Layer(); var layer = new Konva.Layer();
@ -3713,6 +3713,60 @@ suite('Transformer', function() {
assert.equal(dragend, 1); assert.equal(dragend, 1);
}); });
test.only('reattach from several and drag one', function() {
var stage = addStage();
var layer = new Konva.Layer();
stage.add(layer);
var rect1 = new Konva.Rect({
x: 50,
y: 50,
draggable: true,
width: 50,
height: 50,
fill: 'yellow'
});
layer.add(rect1);
var rect2 = new Konva.Rect({
x: 100,
y: 100,
draggable: true,
width: 50,
height: 50,
fill: 'red'
});
layer.add(rect2);
var tr = new Konva.Transformer({
nodes: [rect1, rect2]
});
layer.add(tr);
layer.draw();
tr.nodes([rect1]);
// now drag just the first
stage.simulateMouseDown({
x: 125,
y: 125
});
stage.simulateMouseMove({
x: 130,
y: 130
});
stage.simulateMouseUp({
x: 130,
y: 130
});
// no changes on the second
assert.equal(rect1.x(), 50);
assert.equal(rect1.y(), 50);
});
test('transformer should not hide shapes', function() { test('transformer should not hide shapes', function() {
var stage = addStage(); var stage = addStage();
var layer = new Konva.Layer(); var layer = new Konva.Layer();