Skip to content

Commit a4a00b7

Browse files
committed
Fix header display on TB 100.0+
Issue: #6
1 parent 002b57f commit a4a00b7

File tree

1 file changed

+32
-6
lines changed

1 file changed

+32
-6
lines changed

experiments/displayReceivedHeader.js

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
99
// eslint-disable-next-line no-var
1010
var displayReceivedHeader = class extends ExtensionCommon.ExtensionAPI {
1111
getAPI(context) {
12+
const [majorVersion] = Services.appinfo.platformVersion.split(".", 1);
13+
1214
function getDocumentByTabId(tabId) {
1315
const {ExtensionParent} = ChromeUtils.import("resource://gre/modules/ExtensionParent.jsm");
1416
const target = ExtensionParent.apiManager.global.tabTracker.getTab(tabId);
@@ -22,37 +24,61 @@ var displayReceivedHeader = class extends ExtensionCommon.ExtensionAPI {
2224
addHeadersToWindowById(windowId) {
2325
const window = Services.wm.getOuterWindowWithId(windowId);
2426
const {document} = window;
25-
const expandedHeaders2 = document.getElementById("expandedHeaders2");
27+
const expandedHeaders2 = document
28+
.getElementById(majorVersion < 100 ? "expandedHeaders2" : "extraHeadersArea");
2629

2730
if (expandedHeaders2) {
28-
const element = document.createElement("tr");
31+
const element = document.createElement(majorVersion < 100 ? "tr" : "div");
2932
element.hidden = true;
3033
element.id = "expandedReceivedRow";
34+
element.classList.add("message-header-row");
3135

32-
const headerRowTitle = document.createElement("th");
3336
const headerRowTitleLabel = document.createXULElement("label");
3437
headerRowTitleLabel.id = "expandedReceivedLabel";
35-
headerRowTitleLabel.classList.add("headerName");
38+
headerRowTitleLabel.classList.add(majorVersion < 100 ? "headerName" : "message-header-label");
3639
headerRowTitleLabel.value = "Received";
3740
headerRowTitleLabel.control = "receivedReceivedHeader";
38-
headerRowTitle.appendChild(headerRowTitleLabel);
41+
42+
if (majorVersion < 100) {
43+
const headerRowTitle = document.createElement("th");
44+
headerRowTitle.appendChild(headerRowTitleLabel);
45+
element.appendChild(headerRowTitle);
46+
} else {
47+
element.appendChild(headerRowTitleLabel);
48+
}
3949

4050
const headerRowValue = document.createElement("td");
4151
headerRowValue.id = "receivedReceivedHeader";
4252

43-
element.appendChild(headerRowTitle);
4453
element.appendChild(headerRowValue);
4554
expandedHeaders2.appendChild(element);
4655
} else {
4756
throw Error("Could not find the expandedHeaders2 element");
4857
}
4958
},
5059
setReceivedHeaderHidden(tabId, hidden) {
60+
// Ensure that the all visible labels have the same size.
61+
function syncGridColumnWidths(document) {
62+
const allHeaderLabels = document
63+
.querySelectorAll(".message-header-row:not([hidden]) .message-header-label");
64+
65+
// Clear existing style.
66+
for (const label of allHeaderLabels) {
67+
label.style.minWidth = null;
68+
}
69+
70+
const minWidth = Math.max(...Array.from(allHeaderLabels, (i) => i.clientWidth));
71+
for (const label of allHeaderLabels) {
72+
label.style.minWidth = `${minWidth}px`;
73+
}
74+
}
75+
5176
const document = getDocumentByTabId(tabId);
5277
if (!document) return;
5378

5479
const mailHeaderfield = document.getElementById("expandedReceivedRow");
5580
mailHeaderfield.hidden = hidden;
81+
if (majorVersion >= 100) syncGridColumnWidths(document);
5682
},
5783
setReceivedHeaderValue(tabId, headersArray) {
5884
const document = getDocumentByTabId(tabId);

0 commit comments

Comments
 (0)