Fixing close tab issue & changedContent setting

When redoing changedContent values, no longer consider if these keys are
being pressed:
Escape (27), Caps Lock (20), Shift, CTRL, Alt, Pause/Break (16-19),
Left, Up, Right, Down (37-40), Num Lock, Scroll Lock (144-145), Insert,
Delete (45,46) <<-- mistake, Page Up, Page Down, End, Home (33-36), Left
Win Key, Right Win Key (91-92), F1-F12 (112-123)
This is because CM's changed event will not be triggered with these keys
and I'm not calling onkeypress anymore
Also, rather than now just setting and ending up being stuck at 1 (ie,
changed), we're now detecting if we have at least 1 undo level, if so
set to 1, otherwise 0
(This means you can make changes and undo back to the start and it
doesn't count as a change)
Because this is being handled on changedContent array, no longer need to
consider undo level size when figuring out close button BG colour
openFileMDTs were not being shuffled along when closing tabs but are now
Fixed issue with string replacing closeTabButtonX() - brackets not
needed
This commit is contained in:
Matt Pass
2012-10-23 15:14:36 +01:00
parent f141e6f7a7
commit 5517bf80f9

View File

@@ -1011,14 +1011,14 @@ var ICEcoder = {
// Alter array indicating which files have changed
redoChangedContent: function(evt) {
var key;
var cM, key;
cM = ICEcoder.getcMInstance();
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)) {
ICEcoder.changedContent[ICEcoder.selectedTab-1] = 1;
ICEcoder.redoTabHighlight(ICEcoder.selectedTab);
}
ICEcoder.changedContent[ICEcoder.selectedTab-1] =
top.ICEcoder.content.contentWindow['cM'+ICEcoder.cMInstances[ICEcoder.selectedTab-1]].historySize().undo > 0
? 1 : 0;
ICEcoder.redoTabHighlight(ICEcoder.selectedTab);
},
// Show & hide target element
@@ -1525,7 +1525,7 @@ var ICEcoder = {
cM = ICEcoder.getcMInstance();
for(var i=1;i<=ICEcoder.changedContent.length;i++) {
if (document.getElementById('closeTabButton'+i)) {
document.getElementById('closeTabButton'+i).style.backgroundColor = ICEcoder.changedContent[i-1]==1 && cM.historySize().undo>0
document.getElementById('closeTabButton'+i).style.backgroundColor = ICEcoder.changedContent[i-1]==1
? "#b00" : "rgba(255,255,255,0.3)";
}
tColor = i==selectedTab ? "#000" : "#fff";
@@ -1543,7 +1543,6 @@ var ICEcoder = {
// Close the tab upon request
closeTab: function(closeTabNum) {
var cM, okToRemove, closeFileName;
cM = ICEcoder.getcMInstance();
okToRemove = true;
if (ICEcoder.changedContent[closeTabNum-1]==1) {
@@ -1558,9 +1557,10 @@ var ICEcoder = {
for (var i=closeTabNum;i<ICEcoder.openFiles.length;i++) {
top.document.getElementById('tab'+i).innerHTML = top.document.getElementById('tab'+(i+1)).innerHTML;
ICEcoder.openFiles[i-1] = ICEcoder.openFiles[i];
ICEcoder.openFileMDTs[i-1] = ICEcoder.openFileMDTs[i];
// 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+")").replace(("closeTabButton("+(i+1)+")"),"closeTabButton("+i+")");
top.document.getElementById('tab'+i).innerHTML = top.document.getElementById('tab'+i).innerHTML.replace(("closeTab("+(i+1)+")"),"closeTab("+i+")").replace(("closeTabButton"+(i+1)),"closeTabButton"+i);
}
// 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]].getWrapperElement().style.display = "none";