Backed out changeset 2418bfee53f1 (bug 1932600) Backed out changeset 3297e990715a (bug 1932600) Backed out changeset 24a670dea977 (bug 1930292) Backed out changeset 7dd9f48216dd (bug 1930292) Backed out changeset 15a85ec739dd (bug 1930292)
94 lines
2.5 KiB
JavaScript
94 lines
2.5 KiB
JavaScript
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
var TabsInTitlebar = {
|
|
init() {
|
|
this._readPref();
|
|
Services.prefs.addObserver(this._prefName, this);
|
|
|
|
this._initialized = true;
|
|
this._update();
|
|
},
|
|
|
|
allowedBy(condition, allow) {
|
|
if (allow) {
|
|
if (condition in this._disallowed) {
|
|
delete this._disallowed[condition];
|
|
this._update();
|
|
}
|
|
} else if (!(condition in this._disallowed)) {
|
|
this._disallowed[condition] = null;
|
|
this._update();
|
|
}
|
|
},
|
|
|
|
get systemSupported() {
|
|
let isSupported = false;
|
|
switch (AppConstants.MOZ_WIDGET_TOOLKIT) {
|
|
case "windows":
|
|
case "cocoa":
|
|
isSupported = true;
|
|
break;
|
|
case "gtk":
|
|
isSupported = window.matchMedia("(-moz-gtk-csd-available)").matches;
|
|
break;
|
|
}
|
|
delete this.systemSupported;
|
|
return (this.systemSupported = isSupported);
|
|
},
|
|
|
|
get enabled() {
|
|
return document.documentElement.getAttribute("tabsintitlebar") == "true";
|
|
},
|
|
|
|
observe(subject, topic) {
|
|
if (topic == "nsPref:changed") {
|
|
this._readPref();
|
|
}
|
|
},
|
|
|
|
_initialized: false,
|
|
_disallowed: {},
|
|
_prefName: "browser.tabs.inTitlebar",
|
|
|
|
_readPref() {
|
|
let hiddenTitlebar = Services.appinfo.drawInTitlebar;
|
|
this.allowedBy("pref", hiddenTitlebar);
|
|
},
|
|
|
|
_update() {
|
|
if (!this._initialized) {
|
|
return;
|
|
}
|
|
|
|
let allowed =
|
|
this.systemSupported &&
|
|
!window.fullScreen &&
|
|
!Object.keys(this._disallowed).length;
|
|
if (allowed) {
|
|
document.documentElement.setAttribute("tabsintitlebar", "true");
|
|
if (AppConstants.platform == "macosx") {
|
|
document.documentElement.setAttribute("chromemargin", "0,-1,-1,-1");
|
|
document.documentElement.removeAttribute("drawtitle");
|
|
} else {
|
|
document.documentElement.setAttribute("chromemargin", "0,2,2,2");
|
|
}
|
|
} else {
|
|
document.documentElement.removeAttribute("tabsintitlebar");
|
|
document.documentElement.removeAttribute("chromemargin");
|
|
if (AppConstants.platform == "macosx") {
|
|
document.documentElement.setAttribute("drawtitle", "true");
|
|
}
|
|
}
|
|
|
|
ToolbarIconColor.inferFromText("tabsintitlebar", allowed);
|
|
TabBarVisibility.update(true);
|
|
},
|
|
|
|
uninit() {
|
|
Services.prefs.removeObserver(this._prefName, this);
|
|
},
|
|
};
|