aboutsummaryrefslogtreecommitdiff
path: root/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
diff options
context:
space:
mode:
authorJon Reid2012-03-15 15:00:45 -0700
committerJon Reid2012-03-15 15:00:45 -0700
commit21c941bd1fe55e511a72bfa5dc3019748158bd4a (patch)
tree58a8a0d061103eb4efe07d6dc5a2312ffac3b74b /js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
parentaf93c604649d99fc81dc92b042794b0c60fc4f2d (diff)
downloadninja-21c941bd1fe55e511a72bfa5dc3019748158bd4a.tar.gz
Timeline: Fix for layer selection problems on file open and switch.
Diffstat (limited to 'js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js')
-rw-r--r--js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js69
1 files changed, 42 insertions, 27 deletions
diff --git a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
index 1afb9e5a..212b933e 100644
--- a/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
+++ b/js/panels/Timeline/TimelinePanel.reel/TimelinePanel.js
@@ -139,6 +139,28 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
139 } 139 }
140 }, 140 },
141 141
142 _selectedLayerID:{
143 value: false
144 },
145 selectedLayerID : {
146 get: function() {
147 return this._selectedLayerID;
148 },
149 set: function(newVal) {
150 if (newVal === false) {
151 // We are clearing the timeline, so just set the value and return.
152 this._selectedLayerID = newVal;
153 return;
154 }
155 if (newVal !== this._selectedLayerID) {
156 var selectIndex = this.getLayerIndexByID(newVal);
157 this._selectedLayerID = newVal;
158 this._captureSelection = true;
159 this.selectLayer(selectIndex, true);
160 }
161 }
162 },
163
142 millisecondsOffset:{ 164 millisecondsOffset:{
143 value:1000 165 value:1000
144 }, 166 },
@@ -374,14 +396,11 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
374 396
375 // Feed the new array of objects into the repetitions 397 // Feed the new array of objects into the repetitions
376 // and select the first layer. 398 // and select the first layer.
399 this.temparrLayers[0].layerData.isSelected = true;
400 this.temparrLayers[0].layerData._isFirstDraw = true;
401
377 this.arrLayers=this.temparrLayers; 402 this.arrLayers=this.temparrLayers;
378 403
379 // TODO: We need a better solution to this race condition than a timeout.
380 this._captureSelection = true;
381 var that = this;
382 setTimeout(function() {
383 that.selectLayer(0, true);
384 }, 1000)
385 } else { 404 } else {
386 // New document. Create default layer. 405 // New document. Create default layer.
387 this.createNewLayer(1); 406 this.createNewLayer(1);
@@ -397,6 +416,15 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
397 } else { 416 } else {
398 // we do have information stored. Use it. 417 // we do have information stored. Use it.
399 this._boolCacheArrays = false; 418 this._boolCacheArrays = false;
419 this._captureSelection = true;
420 //var myIndex = 0;
421 for (var i = 0; i < this.application.ninja.currentDocument.tlArrLayers.length; i++) {
422 if ( this.application.ninja.currentDocument.tlArrLayers[i].layerData.isSelected === true ) {
423 this.application.ninja.currentDocument.tlArrLayers[i].layerData._isFirstDraw = true;
424 }
425 }
426
427
400 this.arrLayers = this.application.ninja.currentDocument.tlArrLayers; 428 this.arrLayers = this.application.ninja.currentDocument.tlArrLayers;
401 this.currentLayerNumber = this.application.ninja.currentDocument.tllayerNumber; 429 this.currentLayerNumber = this.application.ninja.currentDocument.tllayerNumber;
402 this.currentLayerSelected = this.application.ninja.currentDocument.tlCurrentLayerSelected; 430 this.currentLayerSelected = this.application.ninja.currentDocument.tlCurrentLayerSelected;
@@ -404,24 +432,6 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
404 this.hashElementMapToLayer = this.application.ninja.currentDocument.tlElementHashTable; 432 this.hashElementMapToLayer = this.application.ninja.currentDocument.tlElementHashTable;
405 this.hashKey = this.application.ninja.currentDocument.hashKey; 433 this.hashKey = this.application.ninja.currentDocument.hashKey;
406 this._boolCacheArrays = true; 434 this._boolCacheArrays = true;
407
408 // Search through the arrLayers and select the layer that's already selected
409 var i = 0,
410 selectMe = 0,
411 arrLayersLength = this.arrLayers.length;
412 for (i = 0; i < arrLayersLength; i++) {
413 if (this.arrLayers[i].isSelected === true) {
414 selectMe = i;
415 }
416 }
417
418
419 this._captureSelection = true;
420 // TODO: Better solution than a timer.
421 var that = this;
422 setTimeout(function() {
423 that.selectLayer(selectMe, true);
424 }, 300)
425 } 435 }
426 } 436 }
427 }, 437 },
@@ -454,6 +464,7 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
454 this._firstTimeLoaded=true; 464 this._firstTimeLoaded=true;
455 this.end_hottext.value = 25; 465 this.end_hottext.value = 25;
456 this.updateTrackContainerWidth(); 466 this.updateTrackContainerWidth();
467 this.selectedLayerID = false;
457 468
458 // Clear the repetitions 469 // Clear the repetitions
459 if (this.arrLayers.length > 0) { 470 if (this.arrLayers.length > 0) {
@@ -464,9 +475,12 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
464 475
465 handleDocumentChange:{ 476 handleDocumentChange:{
466 value:function(event){ 477 value:function(event){
478 // Clear the timeline but not the cache
467 this._boolCacheArrays = false; 479 this._boolCacheArrays = false;
468 this.clearTimelinePanel(); 480 this.clearTimelinePanel();
469 this._boolCacheArrays = true; 481 this._boolCacheArrays = true;
482
483 // Rebind the document events for the new document context
470 this._bindDocumentEvents(); 484 this._bindDocumentEvents();
471 485
472 this.hashInstance = this.createLayerHashTable(); 486 this.hashInstance = this.createLayerHashTable();
@@ -1008,11 +1022,12 @@ var TimelinePanel = exports.TimelinePanel = Montage.create(Component, {
1008 if(this.selectedKeyframes){ 1022 if(this.selectedKeyframes){
1009 this.deselectTweens(); 1023 this.deselectTweens();
1010 } 1024 }
1025
1011 for (i = 0; i < arrLayersLength; i++) { 1026 for (i = 0; i < arrLayersLength; i++) {
1012 if (i === layerIndex) { 1027 if (i === layerIndex) {
1013 this.arrLayers[i].isSelected = true; 1028 this.arrLayers[i].layerData.isSelected = true;
1014 } else { 1029 } else {
1015 this.arrLayers[i].isSelected = false; 1030 this.arrLayers[i].layerData.isSelected = false;
1016 } 1031 }
1017 } 1032 }
1018 1033