fix Transformer bugs

This commit is contained in:
Anton Lavrenov 2019-02-27 08:35:30 -05:00
parent 61a75477c6
commit a62ce96214
3 changed files with 106 additions and 1325 deletions

1370
konva.js

File diff suppressed because it is too large Load Diff

View File

@ -30,8 +30,6 @@ var ATTR_CHANGE_LIST = [
var NODE_RECT = 'nodeRect';
var TRANSFORM_CHANGE_STR = [
'xChange.tr',
'yChange.tr',
'widthChange.tr',
'heightChange.tr',
'scaleXChange.tr',
@ -197,15 +195,15 @@ export class Transformer extends Group {
.map(prop => prop + 'Change.tr')
.join(' ');
const upChange = () => {
const onChange = () => {
this._resetTransformCache();
if (!this._transforming) {
this.update();
}
};
node.on(additionalEvents, upChange);
node.on(TRANSFORM_CHANGE_STR, upChange);
node.on(additionalEvents, onChange);
node.on(TRANSFORM_CHANGE_STR, onChange);
node.on('xChange.tr yChange.tr', () => this._resetTransformCache());
// we may need it if we set node in initial props
// so elements are not defined yet
var elementsCreated = !!this.findOne('.top-left');

View File

@ -1057,6 +1057,57 @@ suite('Transformer', function() {
});
});
test('check transformer with drag&drop and scaled shape', function() {
var stage = addStage();
var layer = new Konva.Layer();
stage.add(layer);
var rect = new Konva.Rect({
x: 0,
y: 0,
width: 100,
height: 100,
fill: 'green',
draggable: true,
scaleX: 2
});
layer.add(rect);
var tr = new Konva.Transformer({
node: rect
});
layer.add(tr);
layer.draw();
stage.simulateMouseDown({
x: 20,
y: 20
});
stage.simulateMouseMove({
x: 30,
y: 30
});
assert.equal(rect.x(), 10);
assert.equal(rect.y(), 10);
assert.equal(tr.x(), 10);
assert.equal(tr.y(), 10);
assert.equal(tr.width(), 200);
stage.simulateMouseUp({
x: 30,
y: 30
});
throw '1';
});
test('on negative scaleY should move rotater', function() {
var stage = addStage();
var layer = new Konva.Layer();