[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