[Pkg-mozext-commits] [firetray] 260/399: fix start_hidden which was based on 'resize' events.

David Prévot taffit at alioth.debian.org
Tue Oct 29 18:23:55 UTC 2013


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

taffit pushed a commit to branch dfsg-clean
in repository firetray.

commit 4fb215ce82d4347595084616491bcb0719cc6443
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Tue Jul 24 02:00:44 2012 +0200

    fix start_hidden which was based on 'resize' events.
    
    "Too small window" bug with Lightning installed.
    
    start_hidden is not so easy to achieve since:
    - we can't rely on appStarted (window displayed in between)
    - we can't rely on 'load' event (window not fully realized - position, size)
    - we can't rely on 'resize' event (window displayed/shown/resized a variable
      number of times)
    Besides, nsIBaseWindow.visibility remains the surest way to hide windows at
    startup.
---
 src/chrome/content/overlay.js           |   32 ++++++++-----------------------
 src/modules/FiretrayHandler.jsm         |    9 +++++----
 src/modules/linux/FiretrayPopupMenu.jsm |   22 ++++++++++-----------
 src/modules/linux/FiretrayWindow.jsm    |   22 ++++++++++++++++-----
 4 files changed, 41 insertions(+), 44 deletions(-)

diff --git a/src/chrome/content/overlay.js b/src/chrome/content/overlay.js
index c904d02..3512a76 100644
--- a/src/chrome/content/overlay.js
+++ b/src/chrome/content/overlay.js
@@ -12,7 +12,6 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
 
   strings: null,
   winId: null,
-  startedHidden: false,
 
   onLoad: function(win) {
     this.strings = document.getElementById("firetray-strings"); // chrome-specific
@@ -22,9 +21,9 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
 
     F.LOG("ONLOAD"); firetray.Handler.dumpWindows();
     this.winId = firetray.Handler.registerWindow(win);
+    win.setTimeout(firetrayChrome.startHiddenMaybe, 0, this.winId);
 
     win.addEventListener('close', firetrayChrome.onClose, true);
-    win.addEventListener('resize', firetrayChrome.onResize, true);
 
     F.LOG('Firetray LOADED: ' + init);
     return true;
@@ -55,34 +54,19 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
     F.LOG('hides_on_close: '+hides_on_close+', hides_single_window='+hides_single_window);
     if (hides_on_close) {
       if (hides_single_window) {
-        firetray.Handler.hideSingleWindow(firetrayChrome.winId);
+        firetray.Handler.hideWindow(firetrayChrome.winId);
       } else
         firetray.Handler.hideAllWindows();
       event && event.preventDefault();
     }
   },
 
-  /**
-   * at startup windows are displayed/shown/resized multiple times. We can't
-   * just set baseWin.visibility=false on 'load' because the window is not
-   * fully realized (position, size incorrect), neither when appStarted because
-   * windows would be displayed in between
-   */
-  onResize: function(event) {
-    F.LOG('onResize'+'. appStarted='+firetray.Handler.appStarted);
-    let win = event.originalTarget;
-    win.removeEventListener('resize', firetrayChrome.onResize, true);
-
-    if(!firetray.Handler.appStarted &&
-       firetray.Utils.prefService.getBoolPref('start_hidden')) {
-      F.LOG('start_hidden: '+firetrayChrome.winId);
-      let baseWin = firetray.Handler.getWindowInterface(win, "nsIBaseWindow");
-      baseWin.visibility = false;
-      if (!firetrayChrome.startedHidden) {
-        firetray.Handler.windows[firetrayChrome.winId].visible = false;
-        firetray.Handler.visibleWindowsCount -= 1;
-        firetrayChrome.startedHidden = true;
-      }
+  startHiddenMaybe: function(winId) {
+    F.LOG('startHiddenMaybe'+'. appStarted='+firetray.Handler.appStarted);
+
+    if (firetray.Utils.prefService.getBoolPref('start_hidden') &&
+        !firetray.Handler.appStarted) { // !appStarted for new windows !
+      firetray.Handler.startupHideWindow(winId);
     }
   }
 
diff --git a/src/modules/FiretrayHandler.jsm b/src/modules/FiretrayHandler.jsm
index e339c38..480863d 100644
--- a/src/modules/FiretrayHandler.jsm
+++ b/src/modules/FiretrayHandler.jsm
@@ -181,8 +181,9 @@ firetray.Handler = {
   registerWindow: function(win) {},
   unregisterWindow: function(win) {},
   getWindowIdFromChromeWindow: function(win) {},
-  hideSingleWindow: function(winId) {},
-  showSingleWindow: function(winId) {},
+  hideWindow: function(winId) {},
+  startupHideWindow: function(winId) {},
+  showWindow: function(winId) {},
   showHideAllWindows: function() {},
   activateLastWindow: function(gtkStatusIcon, gdkEvent, userData) {},
 
@@ -190,14 +191,14 @@ firetray.Handler = {
     F.LOG("showAllWindows");
     for (let winId in firetray.Handler.windows) {
       if (!firetray.Handler.windows[winId].visible)
-        firetray.Handler.showSingleWindow(winId);
+        firetray.Handler.showWindow(winId);
     }
   },
   hideAllWindows: function() {
     F.LOG("hideAllWindows");
     for (let winId in firetray.Handler.windows) {
       if (firetray.Handler.windows[winId].visible)
-        firetray.Handler.hideSingleWindow(winId);
+        firetray.Handler.hideWindow(winId);
     }
   },
 
diff --git a/src/modules/linux/FiretrayPopupMenu.jsm b/src/modules/linux/FiretrayPopupMenu.jsm
index 7737bcd..4e23c9b 100644
--- a/src/modules/linux/FiretrayPopupMenu.jsm
+++ b/src/modules/linux/FiretrayPopupMenu.jsm
@@ -104,7 +104,7 @@ firetray.PopupMenu = {
     this.setWindowItemLabel(menuItemWindow, xid.toString()); // default to xid
 
     this.callbacks.menuItemWindowActivate[xid] = gobject.GCallback_t(
-      function(){firetray.Handler.showSingleWindow(xid);});
+      function(){firetray.Handler.showWindow(xid);});
     gobject.g_signal_connect(menuItemWindow, "activate",
       firetray.PopupMenu.callbacks.menuItemWindowActivate[xid], null);
 
@@ -130,14 +130,14 @@ firetray.PopupMenu = {
   showAllWindowItemsOnlyVisibleWindows: function() {
     for (let xid in firetray.Handler.windows)
       if (!firetray.Handler.windows[xid].visible)
-        this.showSingleWindowItem(xid);
+        this.showWindowItem(xid);
   },
 
-  showSingleWindowItem: function(xid) {
+  showWindowItem: function(xid) {
     if (!this.windowItemsHandled())
       return;
 
-    F.LOG("showSingleWindowItem");
+    F.LOG("showWindowItem");
     let menuItemWindow = firetray.Handler.gtkPopupMenuWindowItems.get(xid);
     this.showItem(menuItemWindow);
     this.setWindowItemLabel(menuItemWindow, firetray.Window.getWindowTitle(xid));
@@ -156,25 +156,25 @@ firetray.PopupMenu = {
 
   hideAllWindowItems: function() {
     for (let xid in firetray.Handler.windows)
-      this.hideSingleWindowItemAndSeparator(xid);
+      this.hideWindowItemAndSeparator(xid);
   },
 
-  hideSingleWindowItemAndSeparator: function(xid) {
-    this.hideSingleWindowItem(xid);
+  hideWindowItemAndSeparator: function(xid) {
+    this.hideWindowItem(xid);
     this.hideWindowSeparator();
   },
 
-  hideSingleWindowItemAndSeparatorMaybe: function(xid) {
+  hideWindowItemAndSeparatorMaybe: function(xid) {
     if (!this.windowItemsHandled())
       return;
 
-    this.hideSingleWindowItem(xid);
+    this.hideWindowItem(xid);
     if (firetray.Handler.visibleWindowsCount === firetray.Handler.windowsCount)
       this.hideWindowSeparator();
   },
 
-  hideSingleWindowItem: function(xid) {
-    F.LOG("hideSingleWindowItem");
+  hideWindowItem: function(xid) {
+    F.LOG("hideWindowItem");
     let menuItemWindow = firetray.Handler.gtkPopupMenuWindowItems.get(xid);
     this.hideItem(menuItemWindow);
   },
diff --git a/src/modules/linux/FiretrayWindow.jsm b/src/modules/linux/FiretrayWindow.jsm
index 3313461..5efcfb5 100644
--- a/src/modules/linux/FiretrayWindow.jsm
+++ b/src/modules/linux/FiretrayWindow.jsm
@@ -204,7 +204,7 @@ firetray.Window = {
     if (firetray.Utils.prefService.getBoolPref('show_activates'))
       firetray.Window.activate(xid);
 
-    firetray.PopupMenu.hideSingleWindowItemAndSeparatorMaybe(xid);
+    firetray.PopupMenu.hideWindowItemAndSeparatorMaybe(xid);
     firetray.Handler.showHideIcon();
   },
 
@@ -218,7 +218,18 @@ firetray.Window = {
 
     firetray.Window.setVisibility(xid, false);
 
-    firetray.PopupMenu.showSingleWindowItem(xid);
+    firetray.PopupMenu.showWindowItem(xid);
+    firetray.Handler.showHideIcon();
+  },
+
+  startupHide: function(xid) {
+    F.LOG('startupHide: '+xid);
+
+    firetray.Handler.windows[xid].baseWin.visibility = false;
+    firetray.Handler.windows[xid].visible = false;
+    firetray.Handler.visibleWindowsCount -= 1;
+
+    firetray.PopupMenu.showWindowItem(xid);
     firetray.Handler.showHideIcon();
   },
 
@@ -492,7 +503,7 @@ firetray.Window = {
         let hides_single_window = firetray.Utils.prefService.getBoolPref('hides_single_window');
         if (hides_on_minimize) {
           if (hides_single_window) {
-            firetray.Handler.hideSingleWindow(xwin);
+            firetray.Handler.hideWindow(xwin);
           } else
           firetray.Handler.hideAllWindows();
         }
@@ -569,8 +580,9 @@ firetray.Handler.unregisterWindow = function(win) {
   return firetray.Window.unregisterWindowByXID(xid);
 };
 
-firetray.Handler.showSingleWindow = firetray.Window.show;
-firetray.Handler.hideSingleWindow = firetray.Window.hide;
+firetray.Handler.showWindow = firetray.Window.show;
+firetray.Handler.hideWindow = firetray.Window.hide;
+firetray.Handler.startupHideWindow = firetray.Window.startupHide;
 
 firetray.Handler.showHideAllWindows = function(gtkStatusIcon, userData) {
   F.LOG("showHideAllWindows: "+userData);

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



More information about the Pkg-mozext-commits mailing list