| Index: lib/windowObserver.js |
| =================================================================== |
| --- a/lib/windowObserver.js |
| +++ b/lib/windowObserver.js |
| @@ -30,17 +30,22 @@ exports.WindowObserver = WindowObserver; |
| * and "end" (default) means to wait until the "load" event. |
| * @constructor |
| */ |
| function WindowObserver(listener, when) |
| { |
| this._listener = listener; |
| this._when = when; |
| - let e = Services.ww.getWindowEnumerator(); |
| + let e = Services.wm.getZOrderDOMWindowEnumerator(null, true); |
| + if (!e.hasMoreElements()) |
| + { |
| + // On Linux the list returned will be empty, see bug 156333. Fall back to random order. |
| + e = Services.wm.getEnumerator(null); |
| + } |
| while (e.hasMoreElements()) |
| { |
| let window = e.getNext().QueryInterface(Ci.nsIDOMWindow); |
| if (when == "start" || window.document.readyState == "complete") |
| this._listener.applyToWindow(window); |
| else |
| this.observe(window, "chrome-document-global-created", null); |
| } |