diff --git a/js/menus/LatticeMenuView.js b/js/menus/LatticeMenuView.js index 4b0b7f3fe5438460f9122084d56e9b24c04ce531..853daa0c8a30042f9e85d80efe5a0d728e1b7c21 100644 --- a/js/menus/LatticeMenuView.js +++ b/js/menus/LatticeMenuView.js @@ -18,7 +18,10 @@ LatticeMenuView = Backbone.View.extend({ this.appState = options.appState; _.bindAll(this, "render"); - this.listenTo(this.model, "change", this.render); + this.listenTo(this.model, "change", function(){ + if(!model.hasChanged('cellMode')) return;//ignore cell mode changes + this.render(); + }); }, _clearCells: function(e){ diff --git a/js/menus/navbar.js b/js/menus/navbar.js index d8d1fe6e3d8fed6bf45541fe54805e8ea335a65f..d312437c2f459ae424434b168daea88e1e4e69ed 100644 --- a/js/menus/navbar.js +++ b/js/menus/navbar.js @@ -50,12 +50,7 @@ NavBar = Backbone.View.extend({ $(e.target).blur(); return; } - if (navSelection) { - if (navSelection=="navDesign") this.model.set("currentTab", this.model.get("lastDesignTab"), {silent: true}); - else if (navSelection=="navSim") this.model.set("currentTab", this.model.get("lastSimulationTab"), {silent: true}); - else if (navSelection=="navAssemble") this.model.set("currentTab", this.model.get("lastAssembleTab"), {silent: true}); - this.model.set("currentNav", navSelection); - } + if (navSelection) this.model.set("currentNav", navSelection); }, _updateNavSelectionUI: function(){ diff --git a/js/models/AppState.js b/js/models/AppState.js index 9a37734d05714e5d66c428e74853edccc9da3f2e..9e573047e7c3380c47e3b64d264ce4c35acf5770 100644 --- a/js/models/AppState.js +++ b/js/models/AppState.js @@ -23,6 +23,7 @@ AppState = Backbone.Model.extend({ this.listenTo(this, "change:currentTab", this._storeTab); this.listenTo(this, "change:currentTab", this._updateLatticeMode); + this.listenTo(this, "change:currentNav", this._updateCurrentTabForNav); this.lattice = options.lattice; }, @@ -41,6 +42,15 @@ AppState = Backbone.Model.extend({ else if (currentTab == "import") this.lattice.set("cellMode", "cell"); else if (currentTab == "sketch") this.lattice.set("cellMode", "cell"); else if (currentTab == "part") this.lattice.set("cellMode", "parts"); + }, + + //update to last tab open in that section + _updateCurrentTabForNav: function(){ + var navSelection = this.get("currentNav"); + if (navSelection=="navDesign") this.set("currentTab", this.get("lastDesignTab"), {silent:true}); + else if (navSelection=="navSim") this.set("currentTab", this.get("lastSimulationTab"), {silent:true}); + else if (navSelection=="navAssemble") this.set("currentTab", this.get("lastAssembleTab"), {silent:true}); + this._updateLatticeMode();//a little bit hacky, this updates the lattice, but holds off on updating the menus til the animation has happened } }); \ No newline at end of file