mail/base/content/mailWindowOverlay.js
changeset 30228 4f1fac782b47fc236f62a18e7a51a51c8982edfd
parent 30220 82dd4503129886c907fdf3d42d7db9c8254a0dc2
child 30239 7b8c28dc874ac5fd0127e8e6967b2d879124b15c
--- 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() {