Bug 1509847 - only move minimized windows behind unminimized ones, r=dao
authorGijs Kruitbosch <gijskruitbosch@gmail.com>
Mon, 18 Feb 2019 07:04:43 +0000 (2019-02-18)
changeset 459762 4f44987ada9476da27ebe098e583d1653e5e871f
parent 459761 2877c6fff181509058d44f0c180ded7656eed334
child 459763 8ca888f573652270684dc7b85d1a796fbd4c5f0b
push id35572
push usercbrindusan@mozilla.com
push dateMon, 18 Feb 2019 21:43:34 +0000 (2019-02-18)
treeherdermozilla-central@c590fd06f7cb [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersdao
bugs1509847
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1509847 - only move minimized windows behind unminimized ones, r=dao Differential Revision: https://phabricator.services.mozilla.com/D19181
browser/modules/BrowserWindowTracker.jsm
--- a/browser/modules/BrowserWindowTracker.jsm
+++ b/browser/modules/BrowserWindowTracker.jsm
@@ -77,18 +77,25 @@ function _handleMessage(message) {
   let browser = message.target;
   if (message.name === "Browser:Init" &&
       browser === browser.ownerGlobal.gBrowser.selectedBrowser) {
     _updateCurrentContentOuterWindowID(browser);
   }
 }
 
 function _trackWindowOrder(window) {
-  _trackedWindows.splice(window.windowState == window.STATE_MINIMIZED ?
-    _trackedWindows.length - 1 : 0, 0, window);
+  if (window.windowState == window.STATE_MINIMIZED) {
+    let firstMinimizedWindow = _trackedWindows.findIndex(w => w.windowState == w.STATE_MINIMIZED);
+    if (firstMinimizedWindow == -1) {
+      firstMinimizedWindow = _trackedWindows.length;
+    }
+    _trackedWindows.splice(firstMinimizedWindow, 0, window);
+  } else {
+    _trackedWindows.unshift(window);
+  }
 }
 
 function _untrackWindowOrder(window) {
   let idx = _trackedWindows.indexOf(window);
   if (idx >= 0)
     _trackedWindows.splice(idx, 1);
 }
 
@@ -135,19 +142,19 @@ var WindowHelper = {
     _untrackWindowOrder(window);
     _trackWindowOrder(window);
 
     _updateCurrentContentOuterWindowID(window.gBrowser.selectedBrowser);
   },
 
   onSizemodeChange(window) {
     if (window.windowState == window.STATE_MINIMIZED) {
-      // Make sure to have the minimized window at the end of the list.
+      // Make sure to have the minimized window behind unminimized windows.
       _untrackWindowOrder(window);
-      _trackedWindows.push(window);
+      _trackWindowOrder(window);
     }
   },
 };
 
 this.BrowserWindowTracker = {
   /**
    * Get the most recent browser window.
    *