diff options
author | Valerio Virgillito | 2012-02-29 12:12:11 -0800 |
---|---|---|
committer | Valerio Virgillito | 2012-02-29 12:12:11 -0800 |
commit | 2b9f63089534356607ad7e0ddde6f22e42d04f80 (patch) | |
tree | 49b07dfb52252ac986c567ad5c3a7c39ebcc86e2 /js | |
parent | 98d491f7e57ff5a9b091e332d7d1e81061e39efa (diff) | |
parent | a89e30ab834a48be32b6122e0c8ac1e0c3ed43e8 (diff) | |
download | ninja-2b9f63089534356607ad7e0ddde6f22e42d04f80.tar.gz |
Merge pull request #88 from mqg734/ToolFixes
Fix for performance issue when moving shapes.
Diffstat (limited to 'js')
-rwxr-xr-x | js/controllers/elements/shapes-controller.js | 11 | ||||
-rwxr-xr-x | js/tools/SelectionTool.js | 16 |
2 files changed, 25 insertions, 2 deletions
diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js index e0bff70c..749a1dd9 100755 --- a/js/controllers/elements/shapes-controller.js +++ b/js/controllers/elements/shapes-controller.js | |||
@@ -19,43 +19,51 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
19 | this.setShapeProperty(el, "strokeSize", value); | 19 | this.setShapeProperty(el, "strokeSize", value); |
20 | el.elementModel.shapeModel.GLGeomObj.setStrokeWidth(val); | 20 | el.elementModel.shapeModel.GLGeomObj.setStrokeWidth(val); |
21 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 21 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
22 | el.elementModel.shapeModel.GLWorld.render(); | ||
22 | break; | 23 | break; |
23 | case "innerRadius": | 24 | case "innerRadius": |
24 | this.setShapeProperty(el, "innerRadius", value); | 25 | this.setShapeProperty(el, "innerRadius", value); |
25 | el.elementModel.shapeModel.GLGeomObj.setInnerRadius(val/100); | 26 | el.elementModel.shapeModel.GLGeomObj.setInnerRadius(val/100); |
26 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 27 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
28 | el.elementModel.shapeModel.GLWorld.render(); | ||
27 | break; | 29 | break; |
28 | case "tlRadius": | 30 | case "tlRadius": |
29 | this.setShapeProperty(el, "tlRadius", value); | 31 | this.setShapeProperty(el, "tlRadius", value); |
30 | el.elementModel.shapeModel.GLGeomObj.setTLRadius(val); | 32 | el.elementModel.shapeModel.GLGeomObj.setTLRadius(val); |
31 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 33 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
34 | el.elementModel.shapeModel.GLWorld.render(); | ||
32 | break; | 35 | break; |
33 | case "trRadius": | 36 | case "trRadius": |
34 | this.setShapeProperty(el, "trRadius", value); | 37 | this.setShapeProperty(el, "trRadius", value); |
35 | el.elementModel.shapeModel.GLGeomObj.setTRRadius(val); | 38 | el.elementModel.shapeModel.GLGeomObj.setTRRadius(val); |
36 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 39 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
40 | el.elementModel.shapeModel.GLWorld.render(); | ||
37 | break; | 41 | break; |
38 | case "blRadius": | 42 | case "blRadius": |
39 | this.setShapeProperty(el, "blRadius", value); | 43 | this.setShapeProperty(el, "blRadius", value); |
40 | el.elementModel.shapeModel.GLGeomObj.setBLRadius(val); | 44 | el.elementModel.shapeModel.GLGeomObj.setBLRadius(val); |
41 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 45 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
46 | el.elementModel.shapeModel.GLWorld.render(); | ||
42 | break; | 47 | break; |
43 | case "brRadius": | 48 | case "brRadius": |
44 | this.setShapeProperty(el, "brRadius", value); | 49 | this.setShapeProperty(el, "brRadius", value); |
45 | el.elementModel.shapeModel.GLGeomObj.setBRRadius(val); | 50 | el.elementModel.shapeModel.GLGeomObj.setBRRadius(val); |
46 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 51 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
52 | el.elementModel.shapeModel.GLWorld.render(); | ||
47 | break; | 53 | break; |
48 | case "width": | 54 | case "width": |
49 | el.elementModel.shapeModel.GLGeomObj.setWidth(val); | 55 | el.elementModel.shapeModel.GLGeomObj.setWidth(val); |
50 | CanvasController.setProperty(el, p, value); | 56 | CanvasController.setProperty(el, p, value); |
51 | el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); | 57 | el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); |
52 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 58 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
59 | el.elementModel.shapeModel.GLWorld.render(); | ||
53 | break; | 60 | break; |
54 | case "height": | 61 | case "height": |
55 | el.elementModel.shapeModel.GLGeomObj.setHeight(val); | 62 | el.elementModel.shapeModel.GLGeomObj.setHeight(val); |
56 | CanvasController.setProperty(el, p, value); | 63 | CanvasController.setProperty(el, p, value); |
57 | el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); | 64 | el.elementModel.shapeModel.GLWorld.setViewportFromCanvas(el); |
58 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 65 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
66 | el.elementModel.shapeModel.GLWorld.render(); | ||
59 | break; | 67 | break; |
60 | case "useWebGl": | 68 | case "useWebGl": |
61 | var canvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", el.className, true); | 69 | var canvas = njModule.NJUtils.makeNJElement("canvas", "Canvas", "shape", el.className, true); |
@@ -76,6 +84,7 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
76 | el.elementModel.shapeModel.GLGeomObj.setStrokeMaterial(sm); | 84 | el.elementModel.shapeModel.GLGeomObj.setStrokeMaterial(sm); |
77 | el.elementModel.shapeModel.strokeMaterial = sm; | 85 | el.elementModel.shapeModel.strokeMaterial = sm; |
78 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 86 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
87 | el.elementModel.shapeModel.GLWorld.render(); | ||
79 | } | 88 | } |
80 | break; | 89 | break; |
81 | case "fillMaterial": | 90 | case "fillMaterial": |
@@ -85,12 +94,12 @@ exports.ShapesController = Montage.create(CanvasController, { | |||
85 | el.elementModel.shapeModel.GLGeomObj.setFillMaterial(fm); | 94 | el.elementModel.shapeModel.GLGeomObj.setFillMaterial(fm); |
86 | el.elementModel.shapeModel.fillMaterial = fm; | 95 | el.elementModel.shapeModel.fillMaterial = fm; |
87 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); | 96 | el.elementModel.shapeModel.GLGeomObj.buildBuffers(); |
97 | el.elementModel.shapeModel.GLWorld.render(); | ||
88 | } | 98 | } |
89 | break; | 99 | break; |
90 | default: | 100 | default: |
91 | CanvasController.setProperty(el, p, value); | 101 | CanvasController.setProperty(el, p, value); |
92 | } | 102 | } |
93 | el.elementModel.shapeModel.GLWorld.render(); | ||
94 | } | 103 | } |
95 | }, | 104 | }, |
96 | 105 | ||
diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js index 83d52d52..caa9e8d6 100755 --- a/js/tools/SelectionTool.js +++ b/js/tools/SelectionTool.js | |||
@@ -312,12 +312,26 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { | |||
312 | } | 312 | } |
313 | if(addToUndoStack) | 313 | if(addToUndoStack) |
314 | { | 314 | { |
315 | ElementsMediator.setProperties(this.application.ninja.selectedElements, | 315 | // if we have a delta, that means the transform handles were used and |
316 | // we should update the width and height too. Otherwise, just update left and top. | ||
317 | if(this._delta) | ||
318 | { | ||
319 | ElementsMediator.setProperties(this.application.ninja.selectedElements, | ||
316 | { "left": newLeft, "top": newTop, "width": newWidth, "height": newHeight }, | 320 | { "left": newLeft, "top": newTop, "width": newWidth, "height": newHeight }, |
317 | "Change", | 321 | "Change", |
318 | "selectionTool", | 322 | "selectionTool", |
319 | { "left" : previousLeft, "top" : previousTop, "width": previousWidth, "height": previousHeight} | 323 | { "left" : previousLeft, "top" : previousTop, "width": previousWidth, "height": previousHeight} |
320 | ); | 324 | ); |
325 | } | ||
326 | else | ||
327 | { | ||
328 | ElementsMediator.setProperties(this.application.ninja.selectedElements, | ||
329 | { "left": newLeft, "top": newTop }, | ||
330 | "Change", | ||
331 | "selectionTool", | ||
332 | { "left" : previousLeft, "top" : previousTop } | ||
333 | ); | ||
334 | } | ||
321 | } | 335 | } |
322 | // Save previous value for undo/redo | 336 | // Save previous value for undo/redo |
323 | this._undoArray = []; | 337 | this._undoArray = []; |