Bug 1404465 - Add browser.tabs.tabMinWidth to control minimum tab width, and set to 50 by default. r?jaws
MozReview-Commit-ID: IK1hgAMyrYD
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -482,16 +482,19 @@ pref("browser.tabs.restorebutton", 0);
// true return to the tab that opened this tab (its owner)
// false return to the adjacent tab (old default)
pref("browser.tabs.selectOwnerOnClose", true);
pref("browser.tabs.showAudioPlayingIcon", true);
// This should match Chromium's audio indicator delay.
pref("browser.tabs.delayHidingAudioPlayingIconMS", 3000);
+// The minimum tab width in pixels
+pref("browser.tabs.tabMinWidth", 50);
+
pref("browser.ctrlTab.previews", false);
// By default, do not export HTML at shutdown.
// If true, at shutdown the bookmarks in your menu and toolbar will
// be exported as HTML to the bookmarks.html file.
pref("browser.bookmarks.autoExportHTML", false);
// The maximum number of daily bookmark backups to
--- a/browser/base/content/browser.css
+++ b/browser/base/content/browser.css
@@ -5,16 +5,17 @@
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
@namespace html url("http://www.w3.org/1999/xhtml");
:root {
--panelui-subview-transition-duration: 150ms;
--lwt-additional-images: none;
--lwt-background-alignment: right top;
--lwt-background-tiling: no-repeat;
+ --tab-min-width: 50px;
}
:root:-moz-lwtheme {
color: var(--lwt-text-color) !important;
}
:root:-moz-lwtheme {
background-color: var(--lwt-accent-color) !important;
@@ -127,17 +128,17 @@ tabbrowser {
.tabbrowser-tab {
-moz-binding: url("chrome://browser/content/tabbrowser.xml#tabbrowser-tab");
}
.tabbrowser-tab:not([pinned]) {
-moz-box-flex: 100;
max-width: 225px;
- min-width: 100px;
+ min-width: var(--tab-min-width);
width: 0;
transition: min-width 100ms ease-out,
max-width 100ms ease-out;
}
.tabbrowser-tab:not([pinned]):not([fadein]) {
max-width: 0.1px;
min-width: 0.1px;
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -5809,16 +5809,25 @@
// This is the only pref observed.
this._findAsYouType = Services.prefs.getBoolPref("accessibility.typeaheadfind");
break;
}
}
]]></body>
</method>
+ <field name="_tabMinWidthLimit">50</field>
+ <property name="tabMinWidth">
+ <setter><![CDATA[
+ let root = document.documentElement;
+ root.style.setProperty("--tab-min-width", val + "px");
+ return val;
+ ]]></setter>
+ </property>
+
<constructor>
<![CDATA[
this.mCurrentBrowser = document.getAnonymousElementByAttribute(this, "anonid", "initialBrowser");
this.mCurrentBrowser.permanentKey = {};
Services.obs.addObserver(this, "contextual-identity-updated");
this.mCurrentTab = this.tabContainer.firstChild;
@@ -5899,16 +5908,23 @@
XPCOMUtils.defineLazyPreferenceGetter(this, "animationsEnabled",
"toolkit.cosmeticAnimations.enabled", true);
XPCOMUtils.defineLazyPreferenceGetter(this, "tabWarmingEnabled",
"browser.tabs.remote.warmup.enabled", false);
XPCOMUtils.defineLazyPreferenceGetter(this, "tabWarmingMax",
"browser.tabs.remote.warmup.maxTabs", 3);
XPCOMUtils.defineLazyPreferenceGetter(this, "tabWarmingUnloadDelay" /* ms */,
"browser.tabs.remote.warmup.unloadDelayMs", 2000);
+ XPCOMUtils.defineLazyPreferenceGetter(this, "tabMinWidthPref",
+ "browser.tabs.tabMinWidth", this._tabMinWidthLimit,
+ (pref, prevValue, newValue) => this.tabMinWidth = newValue,
+ newValue => Math.max(newValue, this._tabMinWidthLimit),
+ );
+
+ this.tabMinWidth = this.tabMinWidthPref;
]]>
</constructor>
<method name="_generateUniquePanelID">
<body><![CDATA[
if (!this._uniquePanelIDCounter) {
this._uniquePanelIDCounter = 0;
}