mirror of
https://github.com/konvajs/konva.git
synced 2025-10-15 12:34:52 +08:00
better stage drag performance
This commit is contained in:
@@ -3,6 +3,10 @@
|
|||||||
All notable changes to this project will be documented in this file.
|
All notable changes to this project will be documented in this file.
|
||||||
This project adheres to [Semantic Versioning](http://semver.org/).
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
||||||
|
|
||||||
|
## 7.0.6
|
||||||
|
|
||||||
|
* Better performance for stage dragging
|
||||||
|
|
||||||
## 7.0.5
|
## 7.0.5
|
||||||
|
|
||||||
* Fixes for `node.cache()` function.
|
* Fixes for `node.cache()` function.
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
var gulp = require('gulp');
|
var gulp = require('gulp');
|
||||||
var rename = require('gulp-rename');
|
var rename = require('gulp-rename');
|
||||||
var uglify = require('gulp-uglify');
|
var uglify = require('gulp-uglify-es').default;
|
||||||
var replace = require('gulp-replace');
|
var replace = require('gulp-replace');
|
||||||
var jsdoc = require('gulp-jsdoc3');
|
var jsdoc = require('gulp-jsdoc3');
|
||||||
var connect = require('gulp-connect');
|
var connect = require('gulp-connect');
|
||||||
|
10
konva.js
10
konva.js
@@ -8,7 +8,7 @@
|
|||||||
* Konva JavaScript Framework v7.0.5
|
* Konva JavaScript Framework v7.0.5
|
||||||
* http://konvajs.org/
|
* http://konvajs.org/
|
||||||
* Licensed under the MIT
|
* Licensed under the MIT
|
||||||
* Date: Sat Aug 08 2020
|
* Date: Fri Aug 21 2020
|
||||||
*
|
*
|
||||||
* Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)
|
* Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)
|
||||||
* Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)
|
* Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)
|
||||||
@@ -3373,7 +3373,13 @@
|
|||||||
var layer = this.getLayer();
|
var layer = this.getLayer();
|
||||||
var layerUnderDrag = false;
|
var layerUnderDrag = false;
|
||||||
DD._dragElements.forEach(function (elem) {
|
DD._dragElements.forEach(function (elem) {
|
||||||
if (elem.dragStatus === 'dragging' && elem.node.getLayer() === layer) {
|
if (elem.dragStatus !== 'dragging') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (elem.node.nodeType === 'Stage') {
|
||||||
|
layerUnderDrag = true;
|
||||||
|
}
|
||||||
|
else if (elem.node.getLayer() === layer) {
|
||||||
layerUnderDrag = true;
|
layerUnderDrag = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
6
konva.min.js
vendored
6
konva.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -34,6 +34,9 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "./lib/Core.js"
|
"path": "./lib/Core.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "./konva.min.js"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@@ -1050,9 +1050,14 @@ export abstract class Node<Config extends NodeConfig = NodeConfig> {
|
|||||||
return this._isVisible(top) && this._isListening(top);
|
return this._isVisible(top) && this._isListening(top);
|
||||||
}
|
}
|
||||||
var layer = this.getLayer();
|
var layer = this.getLayer();
|
||||||
|
|
||||||
var layerUnderDrag = false;
|
var layerUnderDrag = false;
|
||||||
DD._dragElements.forEach((elem) => {
|
DD._dragElements.forEach((elem) => {
|
||||||
if (elem.dragStatus === 'dragging' && elem.node.getLayer() === layer) {
|
if (elem.dragStatus !== 'dragging') {
|
||||||
|
return;
|
||||||
|
} else if (elem.node.nodeType === 'Stage') {
|
||||||
|
layerUnderDrag = true;
|
||||||
|
} else if (elem.node.getLayer() === layer) {
|
||||||
layerUnderDrag = true;
|
layerUnderDrag = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@@ -378,6 +378,42 @@ suite('Layer', function () {
|
|||||||
assert.equal(layer.shouldDrawHit(), true);
|
assert.equal(layer.shouldDrawHit(), true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ======================================================
|
||||||
|
test('should not draw hit on stage drag', function () {
|
||||||
|
var stage = addStage();
|
||||||
|
stage.draggable(true);
|
||||||
|
var layer = new Konva.Layer();
|
||||||
|
|
||||||
|
var circle = new Konva.Circle({
|
||||||
|
x: stage.getWidth() / 2,
|
||||||
|
y: stage.getHeight() / 2,
|
||||||
|
radius: 70,
|
||||||
|
fill: 'red',
|
||||||
|
stroke: 'black',
|
||||||
|
strokeWidth: 4,
|
||||||
|
});
|
||||||
|
|
||||||
|
layer.add(circle);
|
||||||
|
stage.add(layer);
|
||||||
|
|
||||||
|
stage.simulateMouseDown({
|
||||||
|
x: circle.x(),
|
||||||
|
y: circle.y(),
|
||||||
|
});
|
||||||
|
|
||||||
|
stage.simulateMouseMove({
|
||||||
|
x: circle.x() + 10,
|
||||||
|
y: circle.y() + 10,
|
||||||
|
});
|
||||||
|
assert.equal(stage.isDragging(), true, 'dragging of stage is ok');
|
||||||
|
assert.equal(layer.shouldDrawHit(), false);
|
||||||
|
|
||||||
|
stage.simulateMouseUp({
|
||||||
|
x: 291,
|
||||||
|
y: 112,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test('get/set layer size', function () {
|
test('get/set layer size', function () {
|
||||||
var stage = addStage();
|
var stage = addStage();
|
||||||
var layer = new Konva.Layer();
|
var layer = new Konva.Layer();
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"outDir": "lib",
|
"outDir": "lib",
|
||||||
"module": "es2015",
|
"module": "ES2015",
|
||||||
"target": "es5",
|
"target": "ES5",
|
||||||
"noEmitOnError": true,
|
"noEmitOnError": true,
|
||||||
"lib": ["es2015", "dom"]
|
"lib": ["es2015", "dom"]
|
||||||
// "noImplicitAny": true
|
// "noImplicitAny": true
|
||||||
|
Reference in New Issue
Block a user