Files
tubestation/browser/base/content/browser-tabsintitlebar.js
Cristina Horotan bb08cc9f1d Backed out 5 changesets (bug 1930292, bug 1932600) for causing chrome failures at test_maximized_persist.xhtml on a CLOSED TREE
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)
2024-11-28 06:57:35 +02:00

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);
},
};