mirror of
https://github.com/zen-browser/desktop.git
synced 2025-10-04 08:56:34 +00:00
Implement wait promise for preference changes in ZenVerticalTabsManager
This commit is contained in:
@@ -118,6 +118,7 @@ var gZenUIManager = {
|
|||||||
var gZenVerticalTabsManager = {
|
var gZenVerticalTabsManager = {
|
||||||
init() {
|
init() {
|
||||||
this._multiWindowFeature = new ZenMultiWindowFeature();
|
this._multiWindowFeature = new ZenMultiWindowFeature();
|
||||||
|
this._initWaitPromise();
|
||||||
|
|
||||||
ChromeUtils.defineLazyGetter(this, 'isWindowsStyledButtons', () => {
|
ChromeUtils.defineLazyGetter(this, 'isWindowsStyledButtons', () => {
|
||||||
return !(
|
return !(
|
||||||
@@ -135,8 +136,9 @@ var gZenVerticalTabsManager = {
|
|||||||
});
|
});
|
||||||
|
|
||||||
var updateEvent = this._updateEvent.bind(this);
|
var updateEvent = this._updateEvent.bind(this);
|
||||||
|
var onPrefChange = this._onPrefChange.bind(this);
|
||||||
|
|
||||||
this.initializePreferences(updateEvent);
|
this.initializePreferences(onPrefChange);
|
||||||
this._toolbarOriginalParent = document.getElementById('nav-bar').parentElement;
|
this._toolbarOriginalParent = document.getElementById('nav-bar').parentElement;
|
||||||
|
|
||||||
gZenCompactModeManager.addEventListener(updateEvent);
|
gZenCompactModeManager.addEventListener(updateEvent);
|
||||||
@@ -243,6 +245,31 @@ var gZenVerticalTabsManager = {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_initWaitPromise() {
|
||||||
|
this._waitPromise = new Promise((resolve) => {
|
||||||
|
this._resolveWaitPromise = resolve;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
async _onPrefChange() {
|
||||||
|
this._resolveWaitPromise();
|
||||||
|
|
||||||
|
// only run if we are in the active window
|
||||||
|
await this._multiWindowFeature.foreachWindowAsActive(async (browser) => {
|
||||||
|
if (browser.gZenVerticalTabsManager._multiWindowFeature.windowIsActive(browser)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
await browser.gZenVerticalTabsManager._waitPromise;
|
||||||
|
browser.gZenVerticalTabsManager._updateEvent({ dontRebuildAreas: true });
|
||||||
|
browser.gZenVerticalTabsManager._initWaitPromise();
|
||||||
|
});
|
||||||
|
|
||||||
|
if (ZenMultiWindowFeature.isActiveWindow) {
|
||||||
|
this._updateEvent();
|
||||||
|
this._initWaitPromise();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_updateEvent({ forCustomizableMode = false, dontRebuildAreas = false } = {}) {
|
_updateEvent({ forCustomizableMode = false, dontRebuildAreas = false } = {}) {
|
||||||
if (this._isUpdating) {
|
if (this._isUpdating) {
|
||||||
return;
|
return;
|
||||||
|
Reference in New Issue
Block a user