mirror of
https://github.com/konvajs/konva.git
synced 2025-06-28 06:07:13 +08:00
fix trasnformer bug
This commit is contained in:
parent
613493eb21
commit
4f29c6d365
@ -469,7 +469,10 @@ export class Layer extends Container<Group | Shape> {
|
||||
}
|
||||
|
||||
destroy(): this {
|
||||
Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);
|
||||
Util.releaseCanvas(
|
||||
this.getNativeCanvasElement(),
|
||||
this.getHitCanvas()._canvas
|
||||
);
|
||||
return super.destroy();
|
||||
}
|
||||
|
||||
|
@ -962,10 +962,14 @@ export class Transformer extends Group {
|
||||
var node = this.getNode();
|
||||
activeTransformersCount--;
|
||||
this._fire('transformend', { evt: e, target: node });
|
||||
// redraw layer to restore hit graph
|
||||
this.getLayer()?.batchDraw();
|
||||
|
||||
if (node) {
|
||||
this._nodes.forEach((target) => {
|
||||
target._fire('transformend', { evt: e, target });
|
||||
// redraw layer to restore hit graph
|
||||
target.getLayer()?.batchDraw();
|
||||
});
|
||||
}
|
||||
this._movingAnchorName = null;
|
||||
|
@ -4967,7 +4967,7 @@ describe('Transformer', function () {
|
||||
simulateMouseUp(tr, { x: 110, y: 2 });
|
||||
});
|
||||
|
||||
it('skip render on hit graph while transforming', function () {
|
||||
it('skip render on hit graph while transforming', function (done) {
|
||||
var stage = addStage();
|
||||
var layer = new Konva.Layer();
|
||||
stage.add(layer);
|
||||
@ -5008,5 +5008,84 @@ describe('Transformer', function () {
|
||||
y: 100,
|
||||
});
|
||||
assert.equal(shape, rect);
|
||||
// reset position
|
||||
rect.setAttrs({
|
||||
x: 50,
|
||||
y: 50,
|
||||
draggable: true,
|
||||
width: 100,
|
||||
height: 100,
|
||||
});
|
||||
|
||||
tr.nodes([rect]);
|
||||
layer.draw();
|
||||
// now check if graph is visible back when we moved a bit
|
||||
simulateMouseDown(tr, {
|
||||
x: 100,
|
||||
y: 2,
|
||||
});
|
||||
simulateMouseMove(tr, {
|
||||
x: 110,
|
||||
y: 2,
|
||||
});
|
||||
setTimeout(() => {
|
||||
shape = layer.getIntersection({
|
||||
x: 100,
|
||||
y: 100,
|
||||
});
|
||||
assert.equal(shape, null);
|
||||
simulateMouseUp(tr, { x: 110, y: 2 });
|
||||
setTimeout(() => {
|
||||
shape = layer.getIntersection({
|
||||
x: 100,
|
||||
y: 100,
|
||||
});
|
||||
assert.equal(shape, rect);
|
||||
done();
|
||||
}, 100);
|
||||
}, 100);
|
||||
});
|
||||
|
||||
it('enable hit graph back on transformer destroy', function (done) {
|
||||
var stage = addStage();
|
||||
var layer = new Konva.Layer();
|
||||
stage.add(layer);
|
||||
|
||||
var rect = new Konva.Rect({
|
||||
x: 55,
|
||||
y: 55,
|
||||
draggable: true,
|
||||
width: 100,
|
||||
height: 100,
|
||||
fill: 'yellow',
|
||||
});
|
||||
layer.add(rect);
|
||||
|
||||
var tr = new Konva.Transformer({
|
||||
nodes: [rect],
|
||||
});
|
||||
layer.add(tr);
|
||||
layer.draw();
|
||||
|
||||
// now check if graph is visible back when we moved a bit
|
||||
simulateMouseDown(tr, {
|
||||
x: 100,
|
||||
y: 2,
|
||||
});
|
||||
simulateMouseMove(tr, {
|
||||
x: 110,
|
||||
y: 2,
|
||||
});
|
||||
setTimeout(() => {
|
||||
tr.destroy();
|
||||
setTimeout(() => {
|
||||
var shape = layer.getIntersection({
|
||||
x: 100,
|
||||
y: 100,
|
||||
});
|
||||
assert.equal(shape, rect);
|
||||
done();
|
||||
}, 100);
|
||||
}, 100);
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user