diff --git a/js/api-wrapper.js b/js/api-wrapper.js index 9c8246fd3..c12e71352 100644 --- a/js/api-wrapper.js +++ b/js/api-wrapper.js @@ -69,7 +69,17 @@ function switchToTask(id) { var taskData = tasks.get(id); if (taskData.tabs.length > 0) { - switchToTab(taskData.tabs.getSelected()); + var selectedTab = taskData.tabs.getSelected(); + + //if the task has no tab that is selected, switch to the most recent one + + if(!selectedTab) { + selectedTab = taskData.tabs.get().sort(function(a, b) { + return b.lastActivity - a.lastActivity; + })[0].id; + } + + switchToTab(selectedTab); } else { addTab(); } diff --git a/js/taskOverlay.js b/js/taskOverlay.js index 6770318ec..06ba8c7bb 100644 --- a/js/taskOverlay.js +++ b/js/taskOverlay.js @@ -50,6 +50,7 @@ function getTaskOverlayTabElement(tab, task) { }); item.setAttribute("data-tab", tab.id); + item.setAttribute("data-task", task.id); return item; } @@ -113,7 +114,7 @@ function getTaskElement(task, taskIndex) { var el = getTaskOverlayTabElement(task.tabs[i], task); el.addEventListener("click", function (e) { - switchToTask(task.id); + switchToTask(this.getAttribute("data-task")); switchToTab(this.getAttribute("data-tab")); taskOverlay.hide(); @@ -238,6 +239,8 @@ function syncStateAndOverlay() { if (newTabs.length != 0) { for (var i = 0; i < newTabs.length; i++) { task.tabs.add(tabSet[newTabs[i].getAttribute("data-tab")]); + //update the data-task attribute of the tab element + newTabs[i].setAttribute("data-task", task.id); } } else { //the task has no tabs, remove it