[Pkg-mozext-commits] [tabmixplus] 130/147: Follow up bug 1354789 - Cache layout information needed in _positionPinnedTabs

David Prévot taffit at moszumanska.debian.org
Sat Aug 5 15:27:45 UTC 2017


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository tabmixplus.

commit b3f654b236ee38047902d3e720c9a9596f2208df
Author: onemen <tabmix.onemen at gmail.com>
Date:   Thu Apr 13 20:35:36 2017 +0300

    Follow up bug 1354789 - Cache layout information needed in _positionPinnedTabs
---
 chrome/content/minit/tablib.js | 15 +++++++++++----
 chrome/content/tab/tab.js      | 11 ++++++++---
 2 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/chrome/content/minit/tablib.js b/chrome/content/minit/tablib.js
index 1396475..c0d0ec4 100644
--- a/chrome/content/minit/tablib.js
+++ b/chrome/content/minit/tablib.js
@@ -403,7 +403,7 @@ Tabmix.tablib = {
            this.mTabstrip.resetFirstTabInRow();\
          $&'
       )._replace(
-        /this.mTabstrip._scrollButtonDown.(scrollWidth|getBoundingClientRect\(\).width)/,
+        /(tabstrip|this.mTabstrip)\._scrollButtonDown\.getBoundingClientRect\(\)\.width/,
         'TabmixTabbar.scrollButtonsMode != TabmixTabbar.SCROLL_BUTTONS_LEFT_RIGHT ? 0 : $&'
       )._replace(
         'if (doPosition)',
@@ -411,13 +411,20 @@ Tabmix.tablib = {
         '    Tabmix.prefs.getBoolPref("pinnedTabScroll")) {' + $LF +
         '  doPosition = false;' + $LF +
         '}' + $LF +
-        '  if (doPosition && TabmixTabbar.isMultiRow) {' +
-        '    this.setAttribute("positionpinnedtabs", "true");' +
+        'if (doPosition && TabmixTabbar.isMultiRow) {' + $LF +
+        '  this.setAttribute("positionpinnedtabs", "true");' + $LF +
+        '  let layoutData = this._pinnedTabsLayoutCache;' + $LF +
+        '  if (!layoutData) {' + $LF +
+        '    layoutData = {pinnedTabWidth: this.childNodes[0].getBoundingClientRect().width};' + $LF +
+        '    if (Tabmix.isVersion(550)) {' + $LF +
+        '      this._pinnedTabsLayoutCache = layoutData;' + $LF +
+        '    }' + $LF +
+        '  }' + $LF +
         '    let width = TabmixSvc.australis ? 0 : this.mTabstrip.scrollboxPaddingStart;' +
         '    for (let i = 0; i < numPinned; i++) {' +
         '      let tab = this.childNodes[i];' +
         '      tab.style.MozMarginStart = width + "px";' +
-        '      width += tab.getBoundingClientRect().width;' +
+        '      width += layoutData.pinnedTabWidth;' +
         '    }' +
         '    if (width != this.mTabstrip.firstTabInRowMargin) {' +
         '      this.mTabstrip.firstTabInRowMargin = width;' +
diff --git a/chrome/content/tab/tab.js b/chrome/content/tab/tab.js
index d55d6d7..06fe42d 100644
--- a/chrome/content/tab/tab.js
+++ b/chrome/content/tab/tab.js
@@ -50,7 +50,7 @@ var TabmixTabbar = {
       return;
 
     var tabBar = gBrowser.tabContainer;
-    var tabStrip = tabBar.mTabstrip;
+    var tabstrip = tabBar.mTabstrip;
 
     var tabscroll = Tabmix.prefs.getIntPref("tabBarMode");
     if (document.documentElement.getAttribute("chromehidden").indexOf("toolbar") != -1)
@@ -91,18 +91,23 @@ var TabmixTabbar = {
       Tabmix.setItem(tabmixScrollBox, "defaultScrollButtons", isDefault);
 
       if (prevTabscroll == this.SCROLL_BUTTONS_MULTIROW) {
-        tabBar.mTabstrip.resetFirstTabInRow();
+        tabstrip.resetFirstTabInRow();
         Tabmix.tabsUtils.updateVerticalTabStrip(true);
       } else if (isMultiRow && overflow) {
         // if we are in overflow in one line we will have more then one line
         // in multi-row. we try to prevent extra over/underflow events by setting
         // the height in front.
-        tabStrip.orient = "vertical";
+        tabstrip.orient = "vertical";
         if (Tabmix.tabsUtils.updateVerticalTabStrip() == "scrollbar")
           Tabmix.tabsUtils.overflow = true;
       }
       Tabmix.setItem(tabmixScrollBox, "collapsed", null);
 
+      if (gBrowser._numPinnedTabs && tabBar._pinnedTabsLayoutCache) {
+        tabBar._pinnedTabsLayoutCache.paddingStart = tabstrip.scrollboxPaddingStart;
+        tabBar._pinnedTabsLayoutCache.scrollButtonWidth = tabscroll != this.SCROLL_BUTTONS_LEFT_RIGHT ?
+          0 : tabstrip._scrollButtonDown.getBoundingClientRect().width;
+      }
       tabBar._positionPinnedTabs();
       if (isMultiRow && TMP_tabDNDObserver.paddingLeft)
         TMP_tabDNDObserver.paddingLeft = Tabmix.getStyle(tabBar, "paddingLeft");

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/tabmixplus.git



More information about the Pkg-mozext-commits mailing list