1
1
diff --git a/browser/base/content/browser-sidebar.js b/browser/base/content/browser-sidebar.js
2
- index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc820f8cc8 100644
2
+ index 78afa499b4a93fc75e8706a9afb077e2b5ca7428..4da170628abea6eb8b9d3a81385d0d68c4e46449 100644
3
3
--- a/browser/base/content/browser-sidebar.js
4
4
+++ b/browser/base/content/browser-sidebar.js
5
- @@ -2,10 +2,14 @@
6
- * License, v. 2.0. If a copy of the MPL was not distributed with this
7
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
8
-
9
- +
10
- /**
5
+ @@ -6,6 +6,10 @@
11
6
* SidebarUI controls showing and hiding the browser sidebar.
12
7
*/
13
8
var SidebarUI = {
9
+ +
14
10
+ /**
15
11
+ * @returns {Map<string, { title: string, url?: string, menuId: string, triggerButtonId?: string, iconurl: string, bottom?: string }>}
16
12
+ */
17
13
get sidebars() {
18
14
if (this._sidebars) {
19
15
return this._sidebars;
20
- @@ -19,6 +23,8 @@ var SidebarUI = {
21
- .getAttribute("label"),
16
+ @@ -19,6 +23,7 @@ var SidebarUI = {
17
+ get title() {
18
+ return document.getElementById(elementId).getAttribute("label");
19
+ },
20
+ + bottom: false,
21
+ ...rest,
22
+ };
23
+ }
24
+ @@ -30,6 +35,7 @@ var SidebarUI = {
25
+ elementId: "sidebar-switcher-bookmarks",
22
26
url: "chrome://browser/content/places/bookmarksSidebar.xhtml",
23
27
menuId: "menu_bookmarksSidebar",
24
28
+ iconurl: "chrome://global/skin/icons/bookmark-outline.svg",
25
- + bottom: false,
26
- },
29
+ }),
27
30
],
28
31
[
29
- @@ -30 ,6 +36,8 @@ var SidebarUI = {
32
+ @@ -39 ,6 +45,7 @@ var SidebarUI = {
30
33
url: "chrome://browser/content/places/historySidebar.xhtml",
31
34
menuId: "menu_historySidebar",
32
35
triggerButtonId: "appMenuViewHistorySidebar",
33
36
+ iconurl: "chrome://browser/skin/history.svg",
34
- + bottom: false,
35
- },
37
+ }),
36
38
],
37
39
[
38
- @@ -40 ,6 +48,8 @@ var SidebarUI = {
39
- .getAttribute("label") ,
40
+ @@ -47 ,6 +54,7 @@ var SidebarUI = {
41
+ elementId: "sidebar-switcher-tabs" ,
40
42
url: "chrome://browser/content/syncedtabs/sidebar.xhtml",
41
43
menuId: "menu_tabsSidebar",
42
44
+ iconurl: "chrome://browser/skin/tab.svg",
43
- + bottom: false,
44
- },
45
+ }),
45
46
],
46
47
]));
47
- @@ -53,7 +63,10 @@ var SidebarUI = {
48
- }
48
+ @@ -61,6 +69,8 @@ var SidebarUI = {
49
49
return (this._browser = document.getElementById("sidebar"));
50
50
},
51
- +
52
51
POSITION_START_PREF: "sidebar.position_start",
53
52
+ SIDEBAR_TABS_PREF: "pulse.sidebar.enabled",
54
53
+ SIDEBAR_EXTENSIONS_PREF: "pulse.sidebar.extensions.enabled",
55
54
DEFAULT_SIDEBAR_ID: "viewBookmarksSidebar",
56
55
57
56
// lastOpenedId is set in show() but unlike currentID it's not cleared out on hide
58
- @@ -71 ,6 +84 ,8 @@ var SidebarUI = {
57
+ @@ -78 ,6 +88 ,8 @@ var SidebarUI = {
59
58
},
60
59
_splitter: null,
61
60
_icon: null,
@@ -64,23 +63,19 @@ index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc
64
63
_reversePositionButton: null,
65
64
_switcherPanel: null,
66
65
_switcherTarget: null,
67
- @@ -91,6 +106,10 @@ var SidebarUI = {
68
- this._box = document.getElementById("sidebar-box");
69
- this._splitter = document.getElementById("sidebar-splitter");
70
- this._icon = document.getElementById("sidebar-icon");
71
- +
66
+ @@ -109,11 +121,28 @@ var SidebarUI = {
67
+ this._switcherPanel = document.getElementById("sidebarMenu-popup");
68
+ this._switcherTarget = document.getElementById("sidebar-switcher-target");
69
+ this._switcherArrow = document.getElementById("sidebar-switcher-arrow");
72
70
+ this._sidebarIcons = document.getElementById("sidebar-icons");
73
71
+ this._sidebarBottomIcons = document.getElementById("sidebar-icons-bottom");
74
- +
75
- this._reversePositionButton = document.getElementById(
76
- "sidebar-reverse-position"
77
- );
78
- @@ -102,9 +121,53 @@ var SidebarUI = {
72
+
73
+ this._switcherTarget.addEventListener("command", () => {
79
74
this.toggleSwitcherPanel();
80
75
});
81
76
82
77
+ const sidebaritems = this.sidebars.keys();
83
- + const sidebarExtensionVis = Services.prefs.getBoolPref(this.SIDEBAR_EXTENSIONS_PREF);
78
+ + const sidebarExtensionVis = Services.prefs.getBoolPref(this.SIDEBAR_EXTENSIONS_PREF, false );
84
79
+ for (const sidebaritem of sidebaritems) {
85
80
+ if(this.sidebars.get(sidebaritem).extensionId && !sidebarExtensionVis) {
86
81
+ return;
@@ -96,10 +91,11 @@ index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc
96
91
+
97
92
this._inited = true;
98
93
94
+ Services.obs.addObserver(this, "intl:app-locales-changed");
95
+ @@ -121,6 +150,20 @@ var SidebarUI = {
99
96
this._initDeferred.resolve();
100
- +
101
- + },
102
- +
97
+ },
98
+
103
99
+ /**
104
100
+ * Set the sidebar tabs to be visible or not visible
105
101
+ * @param {boolean} visible Sets the sidebar to be visible or not visible
@@ -114,10 +110,14 @@ index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc
114
110
+ }
115
111
+ },
116
112
+
117
- + // nsIObserver
113
+ uninit() {
114
+ // If this is the last browser window, persist various values that should be
115
+ // remembered for after a restart / reopening a browser window.
116
+ @@ -171,6 +214,55 @@ var SidebarUI = {
117
+ break;
118
+ }
119
+ }
118
120
+
119
- + observe(aSubject, aTopic, aData) {
120
- + switch (aTopic) {
121
121
+ case "nsPref:changed":
122
122
+ switch (aData) {
123
123
+ case this.SIDEBAR_TABS_PREF:
@@ -126,13 +126,8 @@ index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc
126
126
+ }
127
127
+ break;
128
128
+ }
129
- },
130
-
131
- uninit() {
132
- @@ -135,6 +198,49 @@ var SidebarUI = {
133
- }
134
- },
135
-
129
+ + },
130
+ +
136
131
+ createSidebarItem(id, icon, config) {
137
132
+ // if the sidebar item is already created, do nothing
138
133
+ if (document.getElementById(`sidebar-background-${id}`)) {
@@ -171,15 +166,10 @@ index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc
171
166
+ }
172
167
+ if(icon){
173
168
+ icon.remove()
174
- + }
175
- + },
176
- +
177
- +
178
- +
179
- /**
180
- * Opens the switcher panel if it's closed, or closes it if it's open.
181
- */
182
- @@ -457,6 +563,10 @@ var SidebarUI = {
169
+ }
170
+ },
171
+
172
+ @@ -521,6 +613,10 @@ var SidebarUI = {
183
173
return this._show(commandID).then(() => {
184
174
this._loadSidebarExtension(commandID);
185
175
@@ -190,7 +180,7 @@ index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc
190
180
if (triggerNode) {
191
181
updateToggleControlLabel(triggerNode);
192
182
}
193
- @@ -552 ,6 +662,25 @@ var SidebarUI = {
183
+ @@ -618 ,6 +714,24 @@ var SidebarUI = {
194
184
195
185
this.selectMenuItem("");
196
186
@@ -211,12 +201,11 @@ index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc
211
201
+
212
202
+ this._box.removeAttribute("checked")
213
203
+ }, 170);
214
- +
215
204
+
216
205
// Replace the document currently displayed in the sidebar with about:blank
217
206
// so that we can free memory by unloading the page. We need to explicitly
218
207
// create a new content viewer because the old one doesn't get destroyed
219
- @@ -560 ,9 +689 ,6 @@ var SidebarUI = {
208
+ @@ -626 ,9 +740 ,6 @@ var SidebarUI = {
220
209
this.browser.setAttribute("src", "about:blank");
221
210
this.browser.docShell.createAboutBlankContentViewer(null, null);
222
211
@@ -226,43 +215,26 @@ index eb1ee9e2b868fa06af4ed88e1d54583cd4196880..4a4f2e926d2954003cd4b8cbacc318dc
226
215
let selBrowser = gBrowser.selectedBrowser;
227
216
selBrowser.focus();
228
217
if (triggerNode) {
229
- @@ -575,21 +701,31 @@ var SidebarUI = {
218
+ @@ -641,10 +752,21 @@ var SidebarUI = {
230
219
* none if the argument is an empty string.
231
220
*/
232
221
selectMenuItem(commandID) {
233
222
+ // Pulse modification: This needs to update both which sidebar item is
234
223
+ // checked and which dropdown item is checked. Hence, we are overriding this
235
224
+ // method.
236
- +
237
225
for (let [id, { menuId, triggerButtonId }] of this.sidebars) {
238
226
let menu = document.getElementById(menuId);
239
227
- let triggerbutton =
240
- - triggerButtonId && document.getElementById(triggerButtonId);
241
- + const dropdownTriggerButton = triggerButtonId && document.getElementById(triggerButtonId);
228
+ + let dropdownTriggerButton =
229
+ triggerButtonId && document.getElementById(triggerButtonId);
242
230
+ let sidebarTriggerButton = document.getElementById("sidebar-background-" + id);
243
- +
244
- + setCheckedForItem(id, menu, sidebarTriggerButton);
231
+ +
232
+ +
245
233
+ setCheckedForItem(id, menu, dropdownTriggerButton);
234
+ + setCheckedForItem(id, menu, sidebarTriggerButton);
246
235
+ }
247
236
+
248
- + function setCheckedForItem(id, menu, sidebarTriggureButton ) {
237
+ + function setCheckedForItem(id, menu, triggerbutton ) {
249
238
if (id == commandID) {
250
239
menu.setAttribute("checked", "true");
251
- - if (triggerbutton) {
252
- - triggerbutton.setAttribute("checked", "true");
253
- - updateToggleControlLabel(triggerbutton);
254
- + if (sidebarTriggureButton) {
255
- + sidebarTriggureButton.setAttribute("checked", "true");
256
- + updateToggleControlLabel(sidebarTriggureButton);
257
- }
258
- } else {
259
- menu.removeAttribute("checked");
260
- - if (triggerbutton) {
261
- - triggerbutton.removeAttribute("checked");
262
- - updateToggleControlLabel(triggerbutton);
263
- + if (sidebarTriggureButton) {
264
- + sidebarTriggureButton.removeAttribute("checked");
265
- + updateToggleControlLabel(sidebarTriggureButton);
266
- }
267
- }
268
- }
240
+ if (triggerbutton) {
0 commit comments