diff --git a/lib/coder.js b/lib/coder.js index 581214b..63200de 100644 --- a/lib/coder.js +++ b/lib/coder.js @@ -16,6 +16,7 @@ var ICEcoder = { delKeyDown: false, // Indicates if DEL keydown canSwitchTabs: true, // Stops switching of tabs when trying to close openFiles: [], // Array of open file URLs + openFileMDTs: [], // Array of open file modification datetimes cMInstances: [], // List of CodeMirror instance no's nextcMInstance: 1, // Next available CodeMirror instance no selectedFiles: [], // Array of selected files @@ -406,7 +407,7 @@ var ICEcoder = { top.ICEcoder.openFiles.push(top.ICEcoder.shortURL); // Setup a new tab - closeTabLink = ''; + closeTabLink = ''; top.document.getElementById('tab'+(top.ICEcoder.openFiles.length)).style.display = "inline-block"; top.document.getElementById('tab'+(top.ICEcoder.openFiles.length)).innerHTML = top.ICEcoder.openFiles[top.ICEcoder.openFiles.length-1] + " " + closeTabLink; @@ -505,7 +506,7 @@ var ICEcoder = { // Alter array indicating which files have changed redoChangedContent: function(evt) { var key; - + key = evt.keyCode ? evt.keyCode : evt.which ? evt.which : evt.charCode; // Exclude a few keys such as Escape... if (top.ICEcoder.ctrlKeyDown==false && key!=27 && key!=20 && (key<16||key>19) && (key<37||key>40) && (key!=144||key!=145) && (key!=44||key!=45) && (key<33||key>36) && (key!=91||key!=92) && (key<112||key>123)) { @@ -533,19 +534,18 @@ var ICEcoder = { // reduce the tab reference number on the closeTab link by 1 top.document.getElementById('tab'+i).innerHTML = top.document.getElementById('tab'+i).innerHTML.replace(("closeTab("+(i+1)+")"),"closeTab("+i+")"); } - - // hide the instance we're closing by setting the hide class, clear the value & remove from the array + // hide the instance we're closing by setting the hide class and removing from the array ICEcoder.content.contentWindow['cM'+top.ICEcoder.cMInstances[closeTabNum-1]].setOption('theme',top.theme+' hidden'); - ICEcoder.content.contentWindow['cM'+top.ICEcoder.cMInstances[closeTabNum-1]].setValue(''); top.ICEcoder.cMInstances.splice(closeTabNum-1,1); - // clear the rightmost tab (or only one left in a 1 tab scenario) & remove from the array top.document.getElementById('tab'+ICEcoder.openFiles.length).style.display = "none"; top.document.getElementById('tab'+ICEcoder.openFiles.length).innerHTML = ""; ICEcoder.openFiles.pop(); - - // Determin the new selectedTab number, reduced by 1 if we have some tabs, 0 for a reset state - ICEcoder.openFiles.length>0 ? ICEcoder.selectedTab-=1 : ICEcoder.selectedTab = 0; + ICEcoder.openFileMDTs.pop(); + // If we're closing the selected tab, determin the new selectedTab number, reduced by 1 if we have some tabs, 0 for a reset state + if (ICEcoder.selectedTab==closeTabNum) { + ICEcoder.openFiles.length>0 ? ICEcoder.selectedTab-=1 : ICEcoder.selectedTab = 0; + } if (ICEcoder.openFiles.length>0 && ICEcoder.selectedTab==0) {ICEcoder.selectedTab=1}; // hide the content area if we have no tabs open @@ -557,7 +557,6 @@ var ICEcoder = { ICEcoder.switchMode(); ICEcoder.switchTab(ICEcoder.selectedTab); } - // Highlight the selected tab after splicing the change state out of the array top.ICEcoder.changedContent.splice(closeTabNum-1,1); top.parent.ICEcoder.redoTabHighlight(ICEcoder.selectedTab); @@ -761,8 +760,8 @@ var ICEcoder = { var saveType; saveAs ? saveType = "saveAs" : saveType = "save"; - - top.ICEcoder.serverQueue("add","lib/file-control.php?action=save&file="+ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(/\//g,"|")+"&saveType="+saveType); + + top.ICEcoder.serverQueue("add","lib/file-control.php?action=save&file="+ICEcoder.openFiles[ICEcoder.selectedTab-1].replace(/\//g,"|")+"&fileMDT="+ICEcoder.openFileMDTs[ICEcoder.selectedTab-1]+"&saveType="+saveType); top.ICEcoder.serverMessage('Saving
'+ICEcoder.openFiles[ICEcoder.selectedTab-1]); },