[Pkg-mozext-commits] [firetray] 07/14: * Fix window close and minimize button when not hides_on_* not set. * Fix unregistering window.

David Prévot taffit at moszumanska.debian.org
Mon Sep 15 02:00:34 UTC 2014


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

taffit pushed a commit to branch master
in repository firetray.

commit 4e087b887fe336462395c57a205fe843ba1c8a1d
Author: foudfou <foudil.newbie+git at gmail.com>
Date:   Sun Sep 14 22:37:23 2014 +0200

    * Fix window close and minimize button when not hides_on_* not set.
    * Fix unregistering window.
---
 src/chrome/content/overlay.js            | 19 ++++++++++---------
 src/modules/winnt/FiretrayStatusIcon.jsm |  2 +-
 src/modules/winnt/FiretrayWindow.jsm     | 29 ++++++++++++++---------------
 3 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/src/chrome/content/overlay.js b/src/chrome/content/overlay.js
index e8319fe..2ea10a9 100644
--- a/src/chrome/content/overlay.js
+++ b/src/chrome/content/overlay.js
@@ -74,29 +74,30 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
    * we override the fake buttons' default actions.
    */
   hijackTitlebarButtons: function() {
-    this.titlebarDispatch.forEach(function(button) {
-      let fInfo = firetrayChrome.replaceCommand(button.id, button.new);
+    Object.keys(this.titlebarDispatch).forEach(function(id) {
+      let button = this.titlebarDispatch[id];
+      let fInfo = firetrayChrome.replaceCommand(id, button.new);
       if (fInfo) {
         button.old = fInfo[0];
         firetray_log.debug('replaced command='+button.id+' type='+fInfo[1]+' func='+fInfo[0]);
         button.type = fInfo[1];
       }
-    });
+    }, this);
   },
 
-  titlebarDispatch: [
-    {id: "titlebar-min", new: function(e){
+  titlebarDispatch: {
+    "titlebar-min": { new: function(e){
       firetray_log.debug('  titlebar-min clicked');
       if (!firetray.Handler.onMinimize(firetrayChrome.winId))
         firetrayChrome.applyDefaultCommand("titlebar-min");
-    }, old: null, type: null},
-    {id: "titlebar-close", new: function(e){
+    }, old: null, type: null },
+    "titlebar-close": { new: function(e){
       firetray_log.debug('  titlebar-close clicked');
       if (!firetrayChrome.onClose(null)) {
         firetrayChrome.applyDefaultCommand("titlebar-close");
       }
-    }, old: null, type: null}
-  ],
+    }, old: null, type: null }
+  },
 
   replaceCommand: function(eltId, func) {
     let elt = document.getElementById(eltId);
diff --git a/src/modules/winnt/FiretrayStatusIcon.jsm b/src/modules/winnt/FiretrayStatusIcon.jsm
index 8f90320..cab03f5 100644
--- a/src/modules/winnt/FiretrayStatusIcon.jsm
+++ b/src/modules/winnt/FiretrayStatusIcon.jsm
@@ -100,7 +100,7 @@ firetray.StatusIcon = {
       let img = this.loadImageFromFile(path);
       if (img && ICON_CHROME_FILES[imgName].use == 'menu')
         /* Ideally we should rebuild the menu each time it is shown as the menu
-         color may change. But, let's just consider it's not worth it for
+         color may change. But let's just consider it's not worth it for
          now. */
         img.himg = this.makeBitMapTransparent(img.himg);
       if (img)
diff --git a/src/modules/winnt/FiretrayWindow.jsm b/src/modules/winnt/FiretrayWindow.jsm
index 17099a9..931e3b0 100644
--- a/src/modules/winnt/FiretrayWindow.jsm
+++ b/src/modules/winnt/FiretrayWindow.jsm
@@ -74,7 +74,8 @@ firetray.Window.wndProc = function(hWnd, uMsg, wParam, lParam) { // filterWindow
 };
 
 /*
- * We get the best effect by intercepting WM_WINDOWPOSCHANGING/SWP_SHOWWINDOW.
+ * For start_hidden, we get the best effect by intercepting
+ * WM_WINDOWPOSCHANGING/SWP_SHOWWINDOW.
  * Here, we subclass only once either with a startup wndProc, if
  * start_hidden, or just our default wndProc. None of the following works:
  * - a WH_CALLWNDPROC hook doesn't catch SWP_SHOWWINDOW
@@ -144,11 +145,12 @@ firetray.Window.attachWndProc = function(procInfo) {
 // procInfo = {wid, mapNew, mapBak}
 firetray.Window.detachWndProc = function(procInfo) {
   let wid = procInfo.wid;
-  let procPrev = procInfo.mapBak.get(wid);
+  let procBak = procInfo.mapBak.get(wid);
+  let procNew = procInfo.mapNew.get(wid);
   let hwnd = firetray.Win32.hexStrToHwnd(wid);
   log.debug("hwnd="+hwnd);
-  let proc = user32.SetWindowLongW(hwnd, user32.GWLP_WNDPROC, procPrev);
-  firetray.js.assert(firetray.js.strEquals(proc, procInfo.mapNew.get(wid)),
+  let procPrev = user32.SetWindowLongW(hwnd, user32.GWLP_WNDPROC, procBak);
+  firetray.js.assert(firetray.js.strEquals(procPrev, procNew),
                      "Wrong WndProc replaced.");
   procInfo.mapNew.remove(wid);
   procInfo.mapBak.remove(wid);
@@ -221,25 +223,22 @@ firetray.Handler.unregisterWindow = function(win) {
     return false;
   }
 
+  let mapNew;
   try {
-    firetray.Window.detachWndProc({
-      wid: wid,
-      mapNew: firetray.Handler.wndProcsStartup,
-      mapBak: firetray.Handler.wndProcsOrig
-    });
-    log.debug("Window never shown.");
+    firetray.Handler.wndProcsStartup.get(wid); // throws
+    mapNew = firetray.Handler.wndProcsStartup;
+    log.debug("Window never shown (unregistered but procStartup still in place).");
   } catch (x) {
     if (x.name === "RangeError") {
-      firetray.Window.detachWndProc({
-        wid: wid,
-        mapNew: firetray.Handler.wndProcs,
-        mapBak: firetray.Handler.wndProcsOrig
-      });
+      mapNew = firetray.Handler.wndProcs;
     } else {
       log.error(x);
       Cu.reportError(x);
     }
   }
+  firetray.Window.detachWndProc({
+    wid: wid, mapNew: mapNew, mapBak: firetray.Handler.wndProcsOrig
+  });
 
   if (!delete firetray.Handler.windows[wid])
     throw new DeleteError();

-- 
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