fix for #91662 (long strings in headers can cause scroll barfs and attachment window to disappear) and bug #61497 (can't select text in message headers).

r=ben, sr=bienvenu.
This commit is contained in:
sspitzer%netscape.com 2002-09-05 06:27:43 +00:00
parent 3a78c9b53c
commit 59c316ce53
4 changed files with 50 additions and 35 deletions

View File

@ -16,15 +16,15 @@
<binding id="mail-toggle-headerfield">
<content>
<xul:hbox class="headerNameBox" align="start">
<xul:image class="expandHeaderViewButton" xbl:inherits="onclick=ontwistyclick"/>
<xul:spacer flex="1"/>
<xul:image class="expandHeaderViewButton" xbl:inherits="onclick=ontwistyclick"/>
<xul:spacer flex="1"/>
<xul:label class="headerName" xbl:inherits="value=label"/>
</xul:hbox>
<xul:label class="headerValue" anonid="headerValue" flex="1">*</xul:label>
<xul:textbox originalclass="headerValue plain" appendoriginalclass="true" keywordrelated="true" class="headerValue plain" anonid="headerValue" flex="1" readonly="true"/>
</content>
<implementation>
<property name="headerValue" onset="return document.getAnonymousElementByAttribute(this, 'anonid', 'headerValue').firstChild.nodeValue = val;"/>
<property name="headerValue" onset="return document.getAnonymousElementByAttribute(this, 'anonid', 'headerValue').value = val;"/>
</implementation>
</binding>
@ -36,11 +36,11 @@
<xul:hbox class="headerNameBox" align="start">
<xul:label class="headerName" xbl:inherits="value=label" flex="1"/>
</xul:hbox>
<xul:label class="headerValue" anonid="headerValue" flex="1">*</xul:label>
<xul:textbox originalclass="headerValue plain" appendoriginalclass="true" keywordrelated="true" class="headerValue plain" anonid="headerValue" flex="1" readonly="true"/>
</content>
<implementation>
<property name="headerValue" onset="return document.getAnonymousElementByAttribute(this, 'anonid', 'headerValue').firstChild.nodeValue = val;" />
<property name="headerValue" onset="return document.getAnonymousElementByAttribute(this, 'anonid', 'headerValue').value = val;"/>
</implementation>
</binding>
@ -48,8 +48,8 @@
<content>
<xul:hbox class="headerNameBox" align="start">
<xul:label class="headerName" xbl:inherits="value=label" flex="1"/>
</xul:hbox>
<xul:mail-emailaddress anonid="emailAddressNode"/>
</xul:hbox>
<xul:mail-emailaddress anonid="emailAddressNode"/>
</content>
<implementation>

View File

@ -585,16 +585,30 @@ function SetKeywords(aKeywords)
return;
// these are the UI elements who care about keywords
var ids = ["expandedKeywordImage","expandedHeaderView","msgHeaderView","collapsedHeaderView","collapsedKeywordImage","editMessageBox","expandedAttachmentBox"];
for (i in ids) {
var element = document.getElementById(ids[i]);
if (element) {
if (aKeywords)
element.setAttribute("class", aKeywords);
else {
// if no keywords, reset class to the original class
element.setAttribute("class", element.getAttribute("originalclass"));
var elements = document.getElementsByAttribute("keywordrelated","true");
var len = elements.length;
for (var i=0; i<len; i++) {
var element = elements[i];
var originalclass = element.getAttribute("originalclass");
// we use XBL for certain headers.
// if the element has keywordrelated="true"
// but no original class, it's an XBL widget
// so to get the real element, use getAnonymousElementByAttribute()
if (!originalclass) {
element = document.getAnonymousElementByAttribute(element, "keywordrelated", "true");
originalclass = element.getAttribute("originalclass");
}
if (aKeywords) {
if (element.getAttribute("appendoriginalclass") == "true") {
aKeywords += " " + originalclass;
}
element.setAttribute("class", aKeywords);
}
else {
// if no keywords, reset class to the original class
element.setAttribute("class", originalclass);
}
}

View File

@ -501,7 +501,7 @@ function updateHeaderValue(headerEntry, headerValue)
function updateHeaderValueInTextNode(headerEntry, headerValue)
{
headerEntry.textNode.setAttribute("value", headerValue);
headerEntry.textNode.value = headerValue;
}
function createNewHeaderView(headerName)
@ -510,9 +510,10 @@ function createNewHeaderView(headerName)
var newHeader = document.createElement("mail-headerfield");
newHeader.setAttribute('id', idName);
newHeader.setAttribute('label', currentHeaderData[headerName].headerName + ':');
// all mail-headerfield elements are keyword related
newHeader.setAttribute('keywordrelated','true');
newHeader.collapsed = true;
// this new element needs to be inserted into the view...
var topViewNode = document.getElementById('expandedHeaders');

View File

@ -55,9 +55,9 @@ Rights Reserved.
<tooltip id="attachmentListTooltip"
onpopupshowing="return FillInAttachmentTooltip(document.tooltipNode);"/>
<hbox id="msgHeaderView" originalclass="none" persist="state">
<hbox id="msgHeaderView" keywordrelated="true" originalclass="none" persist="state">
<grid id="collapsedHeaderView" class="header-part1" originalclass="header-part1" flex="1" collapsed="true">
<grid id="collapsedHeaderView" class="header-part1" keywordrelated="true" originalclass="header-part1" flex="1" collapsed="true">
<rows>
<row flex="1"/>
</rows>
@ -70,11 +70,11 @@ Rights Reserved.
</column>
<column id="collapsedsubjectBox" collapsed="true" flex="1">
<hbox align="start">
<hbox>
<label class="collapsedHeaderDisplayName" value="&subjectField.label;"/>
<label id="collapsedsubjectValue" class="collapsedHeaderValue" crop="right" flex="1"/>
<textbox id="collapsedsubjectValue" keywordrelated="true" class="collapsedHeaderValue plain" originalclass="collapsedHeaderValue plain" readonly="true" crop="right" appendoriginalclass="true" flex="1"/>
</hbox>
</column>
</column>
<column id="collapsedfromBox" collapsed="true">
<hbox align="start">
@ -85,13 +85,13 @@ Rights Reserved.
<column id = "collapseddateBox" collapsed="true">
<hbox align="start">
<label id="collapseddateValue" class="collapsedHeaderValue"/>
<textbox id="collapseddateValue" keywordrelated="true" class="collapsedHeaderValue plain" originalclass="collapsedHeaderValue plain" appendoriginalclass="true" readonly="true"/>
</hbox>
</column>
<column id="collapsedKeywordBox">
<hbox align="start">
<image id="collapsedKeywordImage" originalclass="none"/>
<image id="collapsedKeywordImage" keywordrelated="true" originalclass="none"/>
</hbox>
</column>
@ -103,38 +103,38 @@ Rights Reserved.
</columns>
</grid>
<hbox id="expandedHeaderView" class="header-part1" originalclass="header-part1" flex="1" collapsed="true">
<hbox id="expandedHeaderView" class="header-part1" keywordrelated="true" originalclass="header-part1" flex="1" collapsed="true">
<vbox id="expandedHeaders" flex="1">
<mail-toggle-headerfield id="expandedsubjectBox" class="subjectvalue" label="&subjectField.label;" ontwistyclick="ToggleHeaderView();" collapsed="true"/>
<mail-toggle-headerfield keywordrelated="true" id="expandedsubjectBox" class="subjectvalue" label="&subjectField.label;" ontwistyclick="ToggleHeaderView();" collapsed="true"/>
<mail-emailheaderfield id="expandedfromBox" label="&fromField.label;" collapsed="true"/>
<mail-emailheaderfield id="expandedreply-toBox" label="&replyToField.label;" collapsed="true"/>
<mail-headerfield id="expandeddateBox" label="&dateField.label;" collapsed="true"/>
<mail-headerfield keywordrelated="true" id="expandeddateBox" label="&dateField.label;" collapsed="true"/>
<mail-multi-emailHeaderField id="expandedtoBox" label="&toField.label;" collapsed="true"/>
<mail-multi-emailHeaderField id="expandedccBox" label="&ccField.label;" collapsed="true"/>
<mail-multi-emailHeaderField id="expandedbccBox" label="&bccField.label;" collapsed="true"/>
<mail-headerfield id="expandednewsgroupsBox" label="&newsgroupsField.label;" collapsed="true"/>
<mail-headerfield id="expandedfollowup-toBox" label="&followupToField.label;" collapsed="true"/>
<mail-headerfield id="expandeduser-agentBox" label="&userAgentField.label;" collapsed="true"/>
<mail-headerfield keywordrelated="true" id="expandednewsgroupsBox" label="&newsgroupsField.label;" collapsed="true"/>
<mail-headerfield keywordrelated="true" id="expandedfollowup-toBox" label="&followupToField.label;" collapsed="true"/>
<mail-headerfield keywordrelated="true" id="expandeduser-agentBox" label="&userAgentField.label;" collapsed="true"/>
</vbox>
<vbox id="expandedKeywordBox">
<spacer flex="1"/>
<image id="expandedKeywordImage" originalclass="none" />
<image id="expandedKeywordImage" keywordrelated="true" originalclass="none" />
<spacer flex="1"/>
</vbox>
<vbox id="editMessageBox" class="header-part1" originalclass="header-part1" collapsed="true">
<vbox id="editMessageBox" class="header-part1" keywordrelated="true" originalclass="header-part1" collapsed="true">
<spacer flex="1"/>
<button id="editMessageButton" label="&editMessage.label;" oncommand="MsgComposeDraftMessage()"/>
<spacer flex="1"/>
</vbox>
<vbox id="expandedAttachmentBox" class="header-part1" originalclass="header-part1" collapsed="true">
<vbox id="expandedAttachmentBox" class="header-part1" keywordrelated="true" originalclass="header-part1" collapsed="true">
<label id="attachmentText" value="&attachmentsTree.label;" crop="right"/>
<listbox id="attachmentList" flex="2"
onclick="attachmentListClick(event);" ondraggesture="nsDragAndDrop.startDrag(event,attachmentAreaDNDObserver);" ondragover="nsDragAndDrop.dragOver(event, attachmentAreaDNDObserver);" context="attachmentListContext"/>