mirror of
https://github.com/konvajs/konva.git
synced 2025-04-05 20:48:28 +08:00
fix Transformer bugs
This commit is contained in:
parent
61a75477c6
commit
a62ce96214
@ -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');
|
||||
|
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user