--- a/mail/base/content/mailWindowOverlay.js
+++ b/mail/base/content/mailWindowOverlay.js
@@ -1167,17 +1167,17 @@ function SetGetMsgButtonTooltip() {
}
function RemoveAllMessageTags() {
var selectedMessages = gFolderDisplay.selectedMessages;
if (!selectedMessages.length) {
return;
}
- var messages = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
+ let messages = [];
let tagArray = MailServices.tags.getAllTags();
var allKeys = "";
for (var j = 0; j < tagArray.length; ++j) {
if (j) {
allKeys += " ";
}
allKeys += tagArray[j].key;
@@ -1193,20 +1193,20 @@ function RemoveAllMessageTags() {
for (var i = 0; i < selectedMessages.length; ++i) {
var msgHdr = selectedMessages[i];
msgHdr.label = 0; // remove legacy label
if (prevHdrFolder != msgHdr.folder) {
if (prevHdrFolder) {
prevHdrFolder.removeKeywordsFromMessages(messages, allKeys);
}
- messages.clear();
+ messages = [];
prevHdrFolder = msgHdr.folder;
}
- messages.appendElement(msgHdr);
+ messages.push(msgHdr);
}
if (prevHdrFolder) {
prevHdrFolder.removeKeywordsFromMessages(messages, allKeys);
}
OnTagsChange();
}
/**
@@ -1238,45 +1238,42 @@ function ToggleMessageTagKey(keyNumber)
function ToggleMessageTagMenu(target) {
var key = target.getAttribute("value");
var addKey = target.getAttribute("checked") == "true";
ToggleMessageTag(key, addKey);
}
function ToggleMessageTag(key, addKey) {
- var messages = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
- var msg = Cc["@mozilla.org/array;1"].createInstance(Ci.nsIMutableArray);
+ var messages = [];
var selectedMessages = gFolderDisplay.selectedMessages;
var toggler = addKey ? "addKeywordsToMessages" : "removeKeywordsFromMessages";
var prevHdrFolder = null;
// this crudely handles cross-folder virtual folders with selected messages
// that spans folders, by coalescing consecutive msgs in the selection
// that happen to be in the same folder. nsMsgSearchDBView does this
// better, but nsIMsgDBView doesn't handle commands with arguments,
// and (un)tag takes a key argument.
for (var i = 0; i < selectedMessages.length; ++i) {
var msgHdr = selectedMessages[i];
if (msgHdr.label) {
// Since we touch all these messages anyway, migrate the label now.
// If we don't, the thread tree won't always show the correct tag state,
// because resetting a label doesn't update the tree anymore...
- msg.clear();
- msg.appendElement(msgHdr);
- msgHdr.folder.addKeywordsToMessages(msg, "$label" + msgHdr.label);
+ msgHdr.folder.addKeywordsToMessages([msgHdr], "$label" + msgHdr.label);
msgHdr.label = 0; // remove legacy label
}
if (prevHdrFolder != msgHdr.folder) {
if (prevHdrFolder) {
prevHdrFolder[toggler](messages, key);
}
- messages.clear();
+ messages = [];
prevHdrFolder = msgHdr.folder;
}
- messages.appendElement(msgHdr);
+ messages.push(msgHdr);
}
if (prevHdrFolder) {
prevHdrFolder[toggler](messages, key);
}
OnTagsChange();
}
function AddTag() {