mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-20 16:55:40 +00:00
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:
parent
3a78c9b53c
commit
59c316ce53
@ -16,15 +16,15 @@
|
|||||||
<binding id="mail-toggle-headerfield">
|
<binding id="mail-toggle-headerfield">
|
||||||
<content>
|
<content>
|
||||||
<xul:hbox class="headerNameBox" align="start">
|
<xul:hbox class="headerNameBox" align="start">
|
||||||
<xul:image class="expandHeaderViewButton" xbl:inherits="onclick=ontwistyclick"/>
|
<xul:image class="expandHeaderViewButton" xbl:inherits="onclick=ontwistyclick"/>
|
||||||
<xul:spacer flex="1"/>
|
<xul:spacer flex="1"/>
|
||||||
<xul:label class="headerName" xbl:inherits="value=label"/>
|
<xul:label class="headerName" xbl:inherits="value=label"/>
|
||||||
</xul:hbox>
|
</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>
|
</content>
|
||||||
|
|
||||||
<implementation>
|
<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>
|
</implementation>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
||||||
@ -36,11 +36,11 @@
|
|||||||
<xul:hbox class="headerNameBox" align="start">
|
<xul:hbox class="headerNameBox" align="start">
|
||||||
<xul:label class="headerName" xbl:inherits="value=label" flex="1"/>
|
<xul:label class="headerName" xbl:inherits="value=label" flex="1"/>
|
||||||
</xul:hbox>
|
</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>
|
</content>
|
||||||
|
|
||||||
<implementation>
|
<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>
|
</implementation>
|
||||||
</binding>
|
</binding>
|
||||||
|
|
||||||
@ -48,8 +48,8 @@
|
|||||||
<content>
|
<content>
|
||||||
<xul:hbox class="headerNameBox" align="start">
|
<xul:hbox class="headerNameBox" align="start">
|
||||||
<xul:label class="headerName" xbl:inherits="value=label" flex="1"/>
|
<xul:label class="headerName" xbl:inherits="value=label" flex="1"/>
|
||||||
</xul:hbox>
|
</xul:hbox>
|
||||||
<xul:mail-emailaddress anonid="emailAddressNode"/>
|
<xul:mail-emailaddress anonid="emailAddressNode"/>
|
||||||
</content>
|
</content>
|
||||||
|
|
||||||
<implementation>
|
<implementation>
|
||||||
|
@ -585,16 +585,30 @@ function SetKeywords(aKeywords)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// these are the UI elements who care about keywords
|
// these are the UI elements who care about keywords
|
||||||
var ids = ["expandedKeywordImage","expandedHeaderView","msgHeaderView","collapsedHeaderView","collapsedKeywordImage","editMessageBox","expandedAttachmentBox"];
|
var elements = document.getElementsByAttribute("keywordrelated","true");
|
||||||
for (i in ids) {
|
var len = elements.length;
|
||||||
var element = document.getElementById(ids[i]);
|
for (var i=0; i<len; i++) {
|
||||||
if (element) {
|
var element = elements[i];
|
||||||
if (aKeywords)
|
var originalclass = element.getAttribute("originalclass");
|
||||||
element.setAttribute("class", aKeywords);
|
|
||||||
else {
|
// we use XBL for certain headers.
|
||||||
// if no keywords, reset class to the original class
|
// if the element has keywordrelated="true"
|
||||||
element.setAttribute("class", element.getAttribute("originalclass"));
|
// 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -501,7 +501,7 @@ function updateHeaderValue(headerEntry, headerValue)
|
|||||||
|
|
||||||
function updateHeaderValueInTextNode(headerEntry, headerValue)
|
function updateHeaderValueInTextNode(headerEntry, headerValue)
|
||||||
{
|
{
|
||||||
headerEntry.textNode.setAttribute("value", headerValue);
|
headerEntry.textNode.value = headerValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createNewHeaderView(headerName)
|
function createNewHeaderView(headerName)
|
||||||
@ -510,9 +510,10 @@ function createNewHeaderView(headerName)
|
|||||||
var newHeader = document.createElement("mail-headerfield");
|
var newHeader = document.createElement("mail-headerfield");
|
||||||
newHeader.setAttribute('id', idName);
|
newHeader.setAttribute('id', idName);
|
||||||
newHeader.setAttribute('label', currentHeaderData[headerName].headerName + ':');
|
newHeader.setAttribute('label', currentHeaderData[headerName].headerName + ':');
|
||||||
|
// all mail-headerfield elements are keyword related
|
||||||
|
newHeader.setAttribute('keywordrelated','true');
|
||||||
newHeader.collapsed = true;
|
newHeader.collapsed = true;
|
||||||
|
|
||||||
|
|
||||||
// this new element needs to be inserted into the view...
|
// this new element needs to be inserted into the view...
|
||||||
var topViewNode = document.getElementById('expandedHeaders');
|
var topViewNode = document.getElementById('expandedHeaders');
|
||||||
|
|
||||||
|
@ -55,9 +55,9 @@ Rights Reserved.
|
|||||||
<tooltip id="attachmentListTooltip"
|
<tooltip id="attachmentListTooltip"
|
||||||
onpopupshowing="return FillInAttachmentTooltip(document.tooltipNode);"/>
|
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>
|
<rows>
|
||||||
<row flex="1"/>
|
<row flex="1"/>
|
||||||
</rows>
|
</rows>
|
||||||
@ -70,11 +70,11 @@ Rights Reserved.
|
|||||||
</column>
|
</column>
|
||||||
|
|
||||||
<column id="collapsedsubjectBox" collapsed="true" flex="1">
|
<column id="collapsedsubjectBox" collapsed="true" flex="1">
|
||||||
<hbox align="start">
|
<hbox>
|
||||||
<label class="collapsedHeaderDisplayName" value="&subjectField.label;"/>
|
<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>
|
</hbox>
|
||||||
</column>
|
</column>
|
||||||
|
|
||||||
<column id="collapsedfromBox" collapsed="true">
|
<column id="collapsedfromBox" collapsed="true">
|
||||||
<hbox align="start">
|
<hbox align="start">
|
||||||
@ -85,13 +85,13 @@ Rights Reserved.
|
|||||||
|
|
||||||
<column id = "collapseddateBox" collapsed="true">
|
<column id = "collapseddateBox" collapsed="true">
|
||||||
<hbox align="start">
|
<hbox align="start">
|
||||||
<label id="collapseddateValue" class="collapsedHeaderValue"/>
|
<textbox id="collapseddateValue" keywordrelated="true" class="collapsedHeaderValue plain" originalclass="collapsedHeaderValue plain" appendoriginalclass="true" readonly="true"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
</column>
|
</column>
|
||||||
|
|
||||||
<column id="collapsedKeywordBox">
|
<column id="collapsedKeywordBox">
|
||||||
<hbox align="start">
|
<hbox align="start">
|
||||||
<image id="collapsedKeywordImage" originalclass="none"/>
|
<image id="collapsedKeywordImage" keywordrelated="true" originalclass="none"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
</column>
|
</column>
|
||||||
|
|
||||||
@ -103,38 +103,38 @@ Rights Reserved.
|
|||||||
</columns>
|
</columns>
|
||||||
</grid>
|
</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">
|
<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="expandedfromBox" label="&fromField.label;" collapsed="true"/>
|
||||||
<mail-emailheaderfield id="expandedreply-toBox" label="&replyToField.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="expandedtoBox" label="&toField.label;" collapsed="true"/>
|
||||||
<mail-multi-emailHeaderField id="expandedccBox" label="&ccField.label;" collapsed="true"/>
|
<mail-multi-emailHeaderField id="expandedccBox" label="&ccField.label;" collapsed="true"/>
|
||||||
<mail-multi-emailHeaderField id="expandedbccBox" label="&bccField.label;" collapsed="true"/>
|
<mail-multi-emailHeaderField id="expandedbccBox" label="&bccField.label;" collapsed="true"/>
|
||||||
|
|
||||||
<mail-headerfield id="expandednewsgroupsBox" label="&newsgroupsField.label;" collapsed="true"/>
|
<mail-headerfield keywordrelated="true" id="expandednewsgroupsBox" label="&newsgroupsField.label;" collapsed="true"/>
|
||||||
<mail-headerfield id="expandedfollowup-toBox" label="&followupToField.label;" collapsed="true"/>
|
<mail-headerfield keywordrelated="true" id="expandedfollowup-toBox" label="&followupToField.label;" collapsed="true"/>
|
||||||
<mail-headerfield id="expandeduser-agentBox" label="&userAgentField.label;" collapsed="true"/>
|
<mail-headerfield keywordrelated="true" id="expandeduser-agentBox" label="&userAgentField.label;" collapsed="true"/>
|
||||||
|
|
||||||
</vbox>
|
</vbox>
|
||||||
|
|
||||||
<vbox id="expandedKeywordBox">
|
<vbox id="expandedKeywordBox">
|
||||||
<spacer flex="1"/>
|
<spacer flex="1"/>
|
||||||
<image id="expandedKeywordImage" originalclass="none" />
|
<image id="expandedKeywordImage" keywordrelated="true" originalclass="none" />
|
||||||
<spacer flex="1"/>
|
<spacer flex="1"/>
|
||||||
</vbox>
|
</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"/>
|
<spacer flex="1"/>
|
||||||
<button id="editMessageButton" label="&editMessage.label;" oncommand="MsgComposeDraftMessage()"/>
|
<button id="editMessageButton" label="&editMessage.label;" oncommand="MsgComposeDraftMessage()"/>
|
||||||
<spacer flex="1"/>
|
<spacer flex="1"/>
|
||||||
</vbox>
|
</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"/>
|
<label id="attachmentText" value="&attachmentsTree.label;" crop="right"/>
|
||||||
<listbox id="attachmentList" flex="2"
|
<listbox id="attachmentList" flex="2"
|
||||||
onclick="attachmentListClick(event);" ondraggesture="nsDragAndDrop.startDrag(event,attachmentAreaDNDObserver);" ondragover="nsDragAndDrop.dragOver(event, attachmentAreaDNDObserver);" context="attachmentListContext"/>
|
onclick="attachmentListClick(event);" ondraggesture="nsDragAndDrop.startDrag(event,attachmentAreaDNDObserver);" ondragover="nsDragAndDrop.dragOver(event, attachmentAreaDNDObserver);" context="attachmentListContext"/>
|
||||||
|
Loading…
Reference in New Issue
Block a user