From 3919729eac4798c490e9902ab3580179afc5f405 Mon Sep 17 00:00:00 2001 From: "scott%scott-macgregor.org" Date: Fri, 27 May 2005 05:46:32 +0000 Subject: [PATCH] Bug #295642 --> cannot attach additional attachments after deleting all of the attachments. use .collapse instead of .hidden on the listbox. Update some of the JS to use listbox APIs instead of dom element APIs. sr=bienvenu git-svn-id: svn://10.0.0.236/trunk@173802 18797224-902f-48f8-a5cc-f745e15eee43 --- .../compose/content/MsgComposeCommands.js | 72 ++++++++----------- .../compose/content/messengercompose.xul | 4 +- 2 files changed, 31 insertions(+), 45 deletions(-) diff --git a/mozilla/mail/components/compose/content/MsgComposeCommands.js b/mozilla/mail/components/compose/content/MsgComposeCommands.js index c774ea5c5eb..101e2595760 100644 --- a/mozilla/mail/components/compose/content/MsgComposeCommands.js +++ b/mozilla/mail/components/compose/content/MsgComposeCommands.js @@ -1367,9 +1367,7 @@ function ComposeStartup(recycled, aParams) if (attachments.Count()) { - var attachmentBox = document.getElementById("attachments-box"); - attachmentBox.hidden = false; - document.getElementById("attachmentbucket-sizer").hidden=false; + ChangeAttachmentBucketVisibility(false); } } @@ -2456,14 +2454,12 @@ function AttachFile() var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler); var currentAttachment = fileHandler.getURLSpecFromFile(currentFile); + if (!DuplicateFileCheck(currentAttachment)) { var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance(Components.interfaces.nsIMsgAttachment); attachment.url = currentAttachment; AddAttachment(attachment); - var attachmentBox = document.getElementById("attachments-box"); - attachmentBox.hidden = false; - document.getElementById("attachmentbucket-sizer").hidden=false; - + ChangeAttachmentBucketVisibility(false); gContentChanged = true; } } @@ -2474,7 +2470,6 @@ function AddAttachment(attachment) if (attachment && attachment.url) { var bucket = document.getElementById("attachmentBucket"); - var item = document.createElement("listitem"); if (!attachment.name) attachment.name = gMsgCompose.AttachmentPrettyName(attachment.url, null); @@ -2492,7 +2487,7 @@ function AddAttachment(attachment) attachment.name = sComposeMsgsBundle.getString("partAttachmentSafeName"); } - item.setAttribute("label", attachment.name); //use for display only + var item = bucket.appendItem(attachment.name, ""); item.attachment = attachment; //full attachment object stored here try { item.setAttribute("tooltiptext", decodeURI(attachment.url)); @@ -2522,8 +2517,6 @@ function AddAttachment(attachment) item.setAttribute("image", "moz-icon://" + url.fileName); else item.setAttribute("image", "moz-icon:" + attachment.url); - - bucket.appendChild(item); } } @@ -2538,7 +2531,7 @@ function MessageHasAttachments() { var bucketList = document.getElementById("attachmentBucket"); if (bucketList) { - return (bucketList && bucketList.hasChildNodes() && (bucketList == top.document.commandDispatcher.focusedElement)); + return (bucketList && bucketList.getRowCount() && (bucketList == top.document.commandDispatcher.focusedElement)); } return false; } @@ -2569,18 +2562,16 @@ function AttachPage() var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance(Components.interfaces.nsIMsgAttachment); attachment.url = result.value; AddAttachment(attachment); - var attachmentBox = document.getElementById("attachments-box"); - attachmentBox.hidden = false; - document.getElementById("attachmentbucket-sizer").hidden=false; + ChangeAttachmentBucketVisibility(false); } } } function DuplicateFileCheck(FileUrl) { var bucket = document.getElementById('attachmentBucket'); - for (var index = 0; index < bucket.childNodes.length; index++) + for (var index = 0; index < bucket.getRowCount(); index++) { - var item = bucket.childNodes[index]; + var item = bucket.getItemAtIndex(index); var attachment = item.attachment; if (attachment) { @@ -2599,9 +2590,9 @@ function Attachments2CompFields(compFields) //First, we need to clear all attachment in the compose fields compFields.removeAttachments(); - for (var index = 0; index < bucket.childNodes.length; index++) + for (var index = 0; index < bucket.getRowCount(); index++) { - var item = bucket.childNodes[index]; + var item = bucket.getItemAtIndex(index); var attachment = item.attachment; if (attachment) compFields.addAttachment(attachment); @@ -2612,15 +2603,20 @@ function RemoveAllAttachments() { var child; var bucket = document.getElementById("attachmentBucket"); - while (bucket.hasChildNodes()) + while (bucket.getRowCount()) { - child = bucket.removeChild(bucket.lastChild); + child = bucket.removeItemAt(bucket.getRowCount() - 1); // Let's release the attachment object hold by the node else it won't go away until the window is destroyed child.attachment = null; } - document.getElementById("attachments-box").setAttribute("hidden", "true"); - document.getElementById("attachmentbucket-sizer").setAttribute("hidden", "true"); + ChangeAttachmentBucketVisibility(true); +} + +function ChangeAttachmentBucketVisibility(aHideBucket) +{ + document.getElementById("attachments-box").collapsed = aHideBucket; + document.getElementById("attachmentbucket-sizer").collapsed = aHideBucket; } function RemoveSelectedAttachment() @@ -2628,35 +2624,31 @@ function RemoveSelectedAttachment() var child; var bucket = document.getElementById("attachmentBucket"); if (bucket.selectedItems.length > 0) { - for (var item = bucket.selectedItems.length - 1; item >= 0; item-- ) + for (var index = bucket.selectedCount - 1; index >= 0; index-- ) { - child = bucket.removeChild(bucket.selectedItems[item]); - // Let's release the attachment object hold by the node else it won't go away until the window is destroyed + child = bucket.removeItemAt(bucket.getIndexOfItem(bucket.getSelectedItem(index))); + // Let's release the attachment object held by the node else it won't go away until the window is destroyed child.attachment = null; } gContentChanged = true; } if (!MessageHasAttachments()) - { - document.getElementById("attachments-box").setAttribute("hidden", "true"); - document.getElementById("attachmentbucket-sizer").setAttribute("hidden", "true"); - } + ChangeAttachmentBucketVisibility(true); } function FocusOnFirstAttachment() { var bucketList = document.getElementById("attachmentBucket"); - if (bucketList && bucketList.hasChildNodes()) - bucketTree.selectItem(bucketList.firstChild); + if (bucketList && bucketList.getRowCount()) + bucketTree.selectedIndex(0); } function AttachmentElementHasItems() { var element = document.getElementById("attachmentBucket"); - - return element ? element.childNodes.length : 0; + return element ? element.getRowCount() : 0; } function OpenSelectedAttachment() @@ -3091,10 +3083,7 @@ var envelopeDragObserver = { attachment.url = rawData; attachment.name = prettyName; AddAttachment(attachment); - - var attachmentBox = document.getElementById("attachments-box"); - attachmentBox.hidden = false; - document.getElementById("attachmentbucket-sizer").hidden=false; + ChangeAttachmentBucketVisibility(false); } } } @@ -3113,11 +3102,8 @@ var envelopeDragObserver = { { // make sure the attachment box is visible during drag over var attachmentBox = document.getElementById("attachments-box"); - if (attachmentBox.hidden) - { - attachmentBox.hidden = false; - document.getElementById("attachmentbucket-sizer").hidden=false; - } + if (attachmentBox.collapsed) + ChangeAttachmentBucketVisibility(false); } else { diff --git a/mozilla/mail/components/compose/content/messengercompose.xul b/mozilla/mail/components/compose/content/messengercompose.xul index 94a7f346889..594d5d5b0dd 100644 --- a/mozilla/mail/components/compose/content/messengercompose.xul +++ b/mozilla/mail/components/compose/content/messengercompose.xul @@ -737,8 +737,8 @@ onkeypress="subjectKeyPress(event);" /> -