diff options
author | Nivesh Rajbhandari | 2012-06-19 21:34:35 -0700 |
---|---|---|
committer | Nivesh Rajbhandari | 2012-06-19 21:34:35 -0700 |
commit | 22e664cdbb4bdf54cde87c0c3223e321e18ea372 (patch) | |
tree | ff3697469b8643588a74d5556e8bccf8333af0da /js | |
parent | 483ad57efcd6475776f580c3af5b60e6deeaf781 (diff) | |
download | ninja-22e664cdbb4bdf54cde87c0c3223e321e18ea372.tar.gz |
IKNINJA-1671 - GIO: 3D rotate widget is offset from the object when rotated in negative space.
I fixed this temporarily by disabling the auto stage scroll calculations when we modify matrices. The correct fix will be to update any matrices and local2Global caches if we update the stage's padding (which I'm doing in a separate fix for a single draw cycle for the stage, but that fix is not ready yet).
Signed-off-by: Nivesh Rajbhandari <mqg734@motorola.com>
Diffstat (limited to 'js')
-rwxr-xr-x | js/helper-classes/3D/draw-utils.js | 46 | ||||
-rwxr-xr-x | js/tools/SelectionTool.js | 17 |
2 files changed, 44 insertions, 19 deletions
diff --git a/js/helper-classes/3D/draw-utils.js b/js/helper-classes/3D/draw-utils.js index 6a84c86b..177c844f 100755 --- a/js/helper-classes/3D/draw-utils.js +++ b/js/helper-classes/3D/draw-utils.js | |||
@@ -247,18 +247,18 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, { | |||
247 | // TODO - Check why handleElementChange is being fired before handleAddElement | 247 | // TODO - Check why handleElementChange is being fired before handleAddElement |
248 | handleElementChange: { | 248 | handleElementChange: { |
249 | value: function(event) { | 249 | value: function(event) { |
250 | this._elementChangeHelper(event); | 250 | this._elementChangeHelper(event, false); |
251 | } | 251 | } |
252 | }, | 252 | }, |
253 | 253 | ||
254 | handleElementChanging: { | 254 | handleElementChanging: { |
255 | value: function(event) { | 255 | value: function(event) { |
256 | this._elementChangeHelper(event); | 256 | this._elementChangeHelper(event, true); |
257 | } | 257 | } |
258 | }, | 258 | }, |
259 | 259 | ||
260 | _elementChangeHelper: { | 260 | _elementChangeHelper: { |
261 | value: function(event) { | 261 | value: function(event, isChanging) { |
262 | if(!event.detail || !event.detail.data) { | 262 | if(!event.detail || !event.detail.data) { |
263 | return; | 263 | return; |
264 | } | 264 | } |
@@ -273,35 +273,45 @@ var DrawUtils = exports.DrawUtils = Montage.create(Component, { | |||
273 | l, | 273 | l, |
274 | t, | 274 | t, |
275 | plane, | 275 | plane, |
276 | changed = false; | 276 | changed = false, |
277 | adjustStagePadding = !isChanging || (event.detail.data.prop !== "matrix"); | ||
277 | for(var i=0; i < len; i++) { | 278 | for(var i=0; i < len; i++) { |
278 | plane = els[i].elementModel.props3D.elementPlane; | 279 | plane = els[i].elementModel.props3D.elementPlane; |
279 | if(plane) { | 280 | if(plane) { |
280 | plane.init(); | 281 | plane.init(); |
281 | l = plane._rect.m_left - docLeft; | 282 | if(adjustStagePadding) { |
282 | t = plane._rect.m_top - docTop; | 283 | l = plane._rect.m_left - docLeft; |
283 | if(l < minLeft) { | 284 | t = plane._rect.m_top - docTop; |
284 | minLeft = l; | 285 | if(l < minLeft) { |
285 | } | 286 | minLeft = l; |
286 | if(t < minTop) { | 287 | } |
287 | minTop = t; | 288 | if(t < minTop) { |
289 | minTop = t; | ||
290 | } | ||
288 | } | 291 | } |
289 | } | 292 | } |
290 | } | 293 | } |
291 | 294 | ||
292 | if(minLeft !== stage.userPaddingLeft) { | 295 | if(adjustStagePadding) { |
293 | stage.userPaddingLeft = minLeft; | 296 | if(minLeft !== stage.userPaddingLeft) { |
294 | changed = true; | 297 | stage.userPaddingLeft = minLeft; |
295 | } | 298 | changed = true; |
296 | if(minTop !== stage.userPaddingTop) { | 299 | } |
297 | stage.userPaddingTop = minTop; | 300 | if(minTop !== stage.userPaddingTop) { |
298 | changed = true; | 301 | stage.userPaddingTop = minTop; |
302 | changed = true; | ||
303 | } | ||
299 | } | 304 | } |
300 | 305 | ||
301 | if(!changed) { | 306 | if(!changed) { |
302 | this.drawWorkingPlane(); | 307 | this.drawWorkingPlane(); |
303 | this.draw3DCompass(); | 308 | this.draw3DCompass(); |
304 | } | 309 | } |
310 | |||
311 | // TODO - Remove this once all stage drawing is consolidated into a single draw cycle | ||
312 | if(!isChanging) { | ||
313 | this.application.ninja.toolsData.selectedToolInstance.captureSelectionDrawn(null); | ||
314 | } | ||
305 | } | 315 | } |
306 | } | 316 | } |
307 | }, | 317 | }, |
diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js index 8b644d4a..8c3a9a25 100755 --- a/js/tools/SelectionTool.js +++ b/js/tools/SelectionTool.js | |||
@@ -47,6 +47,20 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { | |||
47 | } | 47 | } |
48 | }, | 48 | }, |
49 | 49 | ||
50 | _areElementsIn2D : { | ||
51 | value: function () { | ||
52 | if(this.application.ninja.selectedElements.length) { | ||
53 | var len = this.application.ninja.selectedElements.length; | ||
54 | for(var i = 0; i < len; i++) { | ||
55 | if(!MathUtils.isIdentityMatrix(this.application.ninja.selectedElements[i].elementModel.getProperty("mat"))) { | ||
56 | return false; | ||
57 | } | ||
58 | } | ||
59 | } | ||
60 | return true; | ||
61 | } | ||
62 | }, | ||
63 | |||
50 | startDraw: { | 64 | startDraw: { |
51 | value: function(event) { | 65 | value: function(event) { |
52 | this.drawData = null; | 66 | this.drawData = null; |
@@ -70,7 +84,8 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, { | |||
70 | if(this._canSnap) | 84 | if(this._canSnap) |
71 | { | 85 | { |
72 | this.initializeSnapping(event); | 86 | this.initializeSnapping(event); |
73 | this._use3DMode = !this._areElementsOnSamePlane(); | 87 | // this._use3DMode = !this._areElementsOnSamePlane(); |
88 | this._use3DMode = !this._areElementsIn2D(); | ||
74 | // console.log("use3DMode = " + this._use3DMode); | 89 | // console.log("use3DMode = " + this._use3DMode); |
75 | } | 90 | } |
76 | else | 91 | else |