mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-24 10:45:42 +00:00
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
This commit is contained in:
parent
a5fc8c1e38
commit
9ef78e49bd
@ -1367,9 +1367,7 @@ function ComposeStartup(recycled, aParams)
|
|||||||
|
|
||||||
if (attachments.Count())
|
if (attachments.Count())
|
||||||
{
|
{
|
||||||
var attachmentBox = document.getElementById("attachments-box");
|
ChangeAttachmentBucketVisibility(false);
|
||||||
attachmentBox.hidden = false;
|
|
||||||
document.getElementById("attachmentbucket-sizer").hidden=false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2456,14 +2454,12 @@ function AttachFile()
|
|||||||
var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler);
|
var fileHandler = ioService.getProtocolHandler("file").QueryInterface(Components.interfaces.nsIFileProtocolHandler);
|
||||||
var currentAttachment = fileHandler.getURLSpecFromFile(currentFile);
|
var currentAttachment = fileHandler.getURLSpecFromFile(currentFile);
|
||||||
|
|
||||||
|
|
||||||
if (!DuplicateFileCheck(currentAttachment)) {
|
if (!DuplicateFileCheck(currentAttachment)) {
|
||||||
var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance(Components.interfaces.nsIMsgAttachment);
|
var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance(Components.interfaces.nsIMsgAttachment);
|
||||||
attachment.url = currentAttachment;
|
attachment.url = currentAttachment;
|
||||||
AddAttachment(attachment);
|
AddAttachment(attachment);
|
||||||
var attachmentBox = document.getElementById("attachments-box");
|
ChangeAttachmentBucketVisibility(false);
|
||||||
attachmentBox.hidden = false;
|
|
||||||
document.getElementById("attachmentbucket-sizer").hidden=false;
|
|
||||||
|
|
||||||
gContentChanged = true;
|
gContentChanged = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2474,7 +2470,6 @@ function AddAttachment(attachment)
|
|||||||
if (attachment && attachment.url)
|
if (attachment && attachment.url)
|
||||||
{
|
{
|
||||||
var bucket = document.getElementById("attachmentBucket");
|
var bucket = document.getElementById("attachmentBucket");
|
||||||
var item = document.createElement("listitem");
|
|
||||||
|
|
||||||
if (!attachment.name)
|
if (!attachment.name)
|
||||||
attachment.name = gMsgCompose.AttachmentPrettyName(attachment.url, null);
|
attachment.name = gMsgCompose.AttachmentPrettyName(attachment.url, null);
|
||||||
@ -2492,7 +2487,7 @@ function AddAttachment(attachment)
|
|||||||
attachment.name = sComposeMsgsBundle.getString("partAttachmentSafeName");
|
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
|
item.attachment = attachment; //full attachment object stored here
|
||||||
try {
|
try {
|
||||||
item.setAttribute("tooltiptext", decodeURI(attachment.url));
|
item.setAttribute("tooltiptext", decodeURI(attachment.url));
|
||||||
@ -2522,8 +2517,6 @@ function AddAttachment(attachment)
|
|||||||
item.setAttribute("image", "moz-icon://" + url.fileName);
|
item.setAttribute("image", "moz-icon://" + url.fileName);
|
||||||
else
|
else
|
||||||
item.setAttribute("image", "moz-icon:" + attachment.url);
|
item.setAttribute("image", "moz-icon:" + attachment.url);
|
||||||
|
|
||||||
bucket.appendChild(item);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2538,7 +2531,7 @@ function MessageHasAttachments()
|
|||||||
{
|
{
|
||||||
var bucketList = document.getElementById("attachmentBucket");
|
var bucketList = document.getElementById("attachmentBucket");
|
||||||
if (bucketList) {
|
if (bucketList) {
|
||||||
return (bucketList && bucketList.hasChildNodes() && (bucketList == top.document.commandDispatcher.focusedElement));
|
return (bucketList && bucketList.getRowCount() && (bucketList == top.document.commandDispatcher.focusedElement));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -2569,18 +2562,16 @@ function AttachPage()
|
|||||||
var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance(Components.interfaces.nsIMsgAttachment);
|
var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance(Components.interfaces.nsIMsgAttachment);
|
||||||
attachment.url = result.value;
|
attachment.url = result.value;
|
||||||
AddAttachment(attachment);
|
AddAttachment(attachment);
|
||||||
var attachmentBox = document.getElementById("attachments-box");
|
ChangeAttachmentBucketVisibility(false);
|
||||||
attachmentBox.hidden = false;
|
|
||||||
document.getElementById("attachmentbucket-sizer").hidden=false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function DuplicateFileCheck(FileUrl)
|
function DuplicateFileCheck(FileUrl)
|
||||||
{
|
{
|
||||||
var bucket = document.getElementById('attachmentBucket');
|
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;
|
var attachment = item.attachment;
|
||||||
if (attachment)
|
if (attachment)
|
||||||
{
|
{
|
||||||
@ -2599,9 +2590,9 @@ function Attachments2CompFields(compFields)
|
|||||||
//First, we need to clear all attachment in the compose fields
|
//First, we need to clear all attachment in the compose fields
|
||||||
compFields.removeAttachments();
|
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;
|
var attachment = item.attachment;
|
||||||
if (attachment)
|
if (attachment)
|
||||||
compFields.addAttachment(attachment);
|
compFields.addAttachment(attachment);
|
||||||
@ -2612,15 +2603,20 @@ function RemoveAllAttachments()
|
|||||||
{
|
{
|
||||||
var child;
|
var child;
|
||||||
var bucket = document.getElementById("attachmentBucket");
|
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
|
// Let's release the attachment object hold by the node else it won't go away until the window is destroyed
|
||||||
child.attachment = null;
|
child.attachment = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
document.getElementById("attachments-box").setAttribute("hidden", "true");
|
ChangeAttachmentBucketVisibility(true);
|
||||||
document.getElementById("attachmentbucket-sizer").setAttribute("hidden", "true");
|
}
|
||||||
|
|
||||||
|
function ChangeAttachmentBucketVisibility(aHideBucket)
|
||||||
|
{
|
||||||
|
document.getElementById("attachments-box").collapsed = aHideBucket;
|
||||||
|
document.getElementById("attachmentbucket-sizer").collapsed = aHideBucket;
|
||||||
}
|
}
|
||||||
|
|
||||||
function RemoveSelectedAttachment()
|
function RemoveSelectedAttachment()
|
||||||
@ -2628,35 +2624,31 @@ function RemoveSelectedAttachment()
|
|||||||
var child;
|
var child;
|
||||||
var bucket = document.getElementById("attachmentBucket");
|
var bucket = document.getElementById("attachmentBucket");
|
||||||
if (bucket.selectedItems.length > 0) {
|
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]);
|
child = bucket.removeItemAt(bucket.getIndexOfItem(bucket.getSelectedItem(index)));
|
||||||
// Let's release the attachment object hold by the node else it won't go away until the window is destroyed
|
// Let's release the attachment object held by the node else it won't go away until the window is destroyed
|
||||||
child.attachment = null;
|
child.attachment = null;
|
||||||
}
|
}
|
||||||
gContentChanged = true;
|
gContentChanged = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!MessageHasAttachments())
|
if (!MessageHasAttachments())
|
||||||
{
|
ChangeAttachmentBucketVisibility(true);
|
||||||
document.getElementById("attachments-box").setAttribute("hidden", "true");
|
|
||||||
document.getElementById("attachmentbucket-sizer").setAttribute("hidden", "true");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function FocusOnFirstAttachment()
|
function FocusOnFirstAttachment()
|
||||||
{
|
{
|
||||||
var bucketList = document.getElementById("attachmentBucket");
|
var bucketList = document.getElementById("attachmentBucket");
|
||||||
|
|
||||||
if (bucketList && bucketList.hasChildNodes())
|
if (bucketList && bucketList.getRowCount())
|
||||||
bucketTree.selectItem(bucketList.firstChild);
|
bucketTree.selectedIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
function AttachmentElementHasItems()
|
function AttachmentElementHasItems()
|
||||||
{
|
{
|
||||||
var element = document.getElementById("attachmentBucket");
|
var element = document.getElementById("attachmentBucket");
|
||||||
|
return element ? element.getRowCount() : 0;
|
||||||
return element ? element.childNodes.length : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function OpenSelectedAttachment()
|
function OpenSelectedAttachment()
|
||||||
@ -3091,10 +3083,7 @@ var envelopeDragObserver = {
|
|||||||
attachment.url = rawData;
|
attachment.url = rawData;
|
||||||
attachment.name = prettyName;
|
attachment.name = prettyName;
|
||||||
AddAttachment(attachment);
|
AddAttachment(attachment);
|
||||||
|
ChangeAttachmentBucketVisibility(false);
|
||||||
var attachmentBox = document.getElementById("attachments-box");
|
|
||||||
attachmentBox.hidden = false;
|
|
||||||
document.getElementById("attachmentbucket-sizer").hidden=false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3113,11 +3102,8 @@ var envelopeDragObserver = {
|
|||||||
{
|
{
|
||||||
// make sure the attachment box is visible during drag over
|
// make sure the attachment box is visible during drag over
|
||||||
var attachmentBox = document.getElementById("attachments-box");
|
var attachmentBox = document.getElementById("attachments-box");
|
||||||
if (attachmentBox.hidden)
|
if (attachmentBox.collapsed)
|
||||||
{
|
ChangeAttachmentBucketVisibility(false);
|
||||||
attachmentBox.hidden = false;
|
|
||||||
document.getElementById("attachmentbucket-sizer").hidden=false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -737,8 +737,8 @@
|
|||||||
onkeypress="subjectKeyPress(event);" />
|
onkeypress="subjectKeyPress(event);" />
|
||||||
</hbox>
|
</hbox>
|
||||||
</vbox>
|
</vbox>
|
||||||
<splitter id="attachmentbucket-sizer" hidden="true" collapse="after"/>
|
<splitter id="attachmentbucket-sizer" collapsed="true" collapse="after"/>
|
||||||
<vbox id="attachments-box" hidden="true">
|
<vbox id="attachments-box" collapsed="true">
|
||||||
<label id="attachmentBucketText" value="&attachments.label;" crop="right"
|
<label id="attachmentBucketText" value="&attachments.label;" crop="right"
|
||||||
accesskey="&attachments.accesskey;" control="attachmentBucket"/>
|
accesskey="&attachments.accesskey;" control="attachmentBucket"/>
|
||||||
<listbox seltype="multiple" id="attachmentBucket" flex="1" rows="4"
|
<listbox seltype="multiple" id="attachmentBucket" flex="1" rows="4"
|
||||||
|
Loading…
Reference in New Issue
Block a user