[Pkg-mozext-commits] [firetray] 40/84: * hides_on_minimize for winnt * explicit removeEventListener('close') in overlay.js
David Prévot
taffit at moszumanska.debian.org
Sun Jul 20 01:42:44 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 25bc039a6d0826e08c6d8d6e1c2ba9e41b0058e5
Author: foudfou <foudil.newbie+git at gmail.com>
Date: Sat Mar 15 17:38:00 2014 +0100
* hides_on_minimize for winnt
* explicit removeEventListener('close') in overlay.js
Them titlebar is preventing fake close/minimize buttons to fire needed events
(close, WM_SYSCOMMAND). So, until Bug 827880 is fixed, hides_on_minimize
doesn't work with the menubar hidden.
---
src/chrome/content/overlay.js | 8 +++++---
src/modules/FiretrayHandler.jsm | 16 +++++++++++++++-
src/modules/ctypes/winnt/win32.jsm | 5 +++++
src/modules/linux/FiretrayWindow.jsm | 13 ++++---------
src/modules/winnt/FiretrayWindow.jsm | 12 +++++++++++-
5 files changed, 40 insertions(+), 14 deletions(-)
diff --git a/src/chrome/content/overlay.js b/src/chrome/content/overlay.js
index ef0d805..dbe01a9 100644
--- a/src/chrome/content/overlay.js
+++ b/src/chrome/content/overlay.js
@@ -36,6 +36,7 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
window close, a new window will create a new handler (and hence, a new tray
icon) */
onQuit: function(win) {
+ win.removeEventListener('close', firetrayChrome.onClose, true);
firetray.Handler.unregisterWindow(win);
firetray_log.info("windowsCount="+firetray.Handler.windowsCount+", visibleWindowsCount="+firetray.Handler.visibleWindowsCount);
firetray_log.debug('Firetray UNLOADED !');
@@ -46,11 +47,12 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
hides_on_close is set (we are not actually closing the tabs!). There is no
use trying to set warnOnClose=false temporarily in onClose, since onClose is
called *after* the popup */
+ // FIXME: https://bugzilla.mozilla.org/show_bug.cgi?id=827880 menubar
+ // prevents close button to fire 'close'
onClose: function(event) {
firetray_log.debug('Firetray CLOSE');
- let win = event.originalTarget;
- if (!win instanceof ChromeWindow)
- throw new TypeError('originalTarget not a ChromeWindow');
+ if (event.originalTarget != window)
+ throw new TypeError('originalTarget not the current ChromeWindow');
let hides_on_close = firetray.Utils.prefService.getBoolPref('hides_on_close');
firetray_log.debug('hides_on_close: '+hides_on_close);
diff --git a/src/modules/FiretrayHandler.jsm b/src/modules/FiretrayHandler.jsm
index 8e8993c..0c4a59a 100644
--- a/src/modules/FiretrayHandler.jsm
+++ b/src/modules/FiretrayHandler.jsm
@@ -129,7 +129,7 @@ firetray.Handler = {
firetray.Chat.init();
} else {
let platforms = FIRETRAY_CHAT_SUPPORTED_OS.join(", ");
- log.error("Only "+platforms+" platform(s) supported at this time. Chat not loaded");
+ log.warn("Only "+platforms+" platform(s) supported at this time. Chat not loaded");
}
}
@@ -370,6 +370,20 @@ firetray.Handler = {
}
},
+ hideOnMinimizeMaybe: function(wid) {
+ let hidden = false;
+ let hides_on_minimize = firetray.Utils.prefService.getBoolPref('hides_on_minimize');
+ if (hides_on_minimize) {
+ let hides_single_window = firetray.Utils.prefService.getBoolPref('hides_single_window');
+ if (hides_single_window)
+ firetray.Handler.hideWindow(wid);
+ else
+ firetray.Handler.hideAllWindows();
+ hidden = true;
+ }
+ return hidden;
+ },
+
showHideIcon: function() {
if (firetray.Utils.prefService.getBoolPref('show_icon_on_hide'))
firetray.Handler.setIconVisibility(
diff --git a/src/modules/ctypes/winnt/win32.jsm b/src/modules/ctypes/winnt/win32.jsm
index 38cb97b..a369106 100644
--- a/src/modules/ctypes/winnt/win32.jsm
+++ b/src/modules/ctypes/winnt/win32.jsm
@@ -105,6 +105,8 @@ var win32 = new function() {
this.WM_SHOWWINDOW = 0x0018;
this.WM_WININICHANGE = 0x001A;
this.WM_SETTINGCHANGE = this.WM_WININICHANGE;
+ this.WM_COMMAND = 0x0111;
+ this.WM_SYSCOMMAND = 0x0112;
this.WM_HSCROLL = 0x0114;
this.WM_VSCROLL = 0x0115;
this.WM_MOUSEWHEEL = 0x020A;
@@ -132,6 +134,9 @@ var win32 = new function() {
this.WM_MOUSELAST = 0x020D;
this.WM_MOUSELAST = 0x020A;
+ this.SC_MINIMIZE = 0xF020;
+ this.SC_CLOSE = 0xF060;
+
this.BITMAP = ctypes.StructType("BITMAP", [
{ "bmType": this.LONG },
{ "bmWidth": this.LONG },
diff --git a/src/modules/linux/FiretrayWindow.jsm b/src/modules/linux/FiretrayWindow.jsm
index 8ba273a..7c77713 100644
--- a/src/modules/linux/FiretrayWindow.jsm
+++ b/src/modules/linux/FiretrayWindow.jsm
@@ -555,17 +555,12 @@ firetray.Window.filterWindow = function(xev, gdkEv, data) {
let winStates = firetray.Window.getXWindowStates(xid);
let isHidden = winStates & FIRETRAY_XWINDOW_HIDDEN;
log.debug("winStates="+winStates+", isHidden="+isHidden);
- // NOTE: Gecko 8.0 provides the 'sizemodechange' event
+ // NOTE: Gecko 8.0 provides the 'sizemodechange' event, which comes once
+ // the window is minimized. i.e. preventDefault() or returning false won't
+ // prevent the event.
if (isHidden) {
log.debug("GOT ICONIFIED");
- let hides_on_minimize = firetray.Utils.prefService.getBoolPref('hides_on_minimize');
- let hides_single_window = firetray.Utils.prefService.getBoolPref('hides_single_window');
- if (hides_on_minimize) {
- if (hides_single_window)
- firetray.Handler.hideWindow(xid);
- else
- firetray.Handler.hideAllWindows();
- }
+ firetray.Handler.hideOnMinimizeMaybe(xid);
}
break;
diff --git a/src/modules/winnt/FiretrayWindow.jsm b/src/modules/winnt/FiretrayWindow.jsm
index c7773af..afd9a4f 100644
--- a/src/modules/winnt/FiretrayWindow.jsm
+++ b/src/modules/winnt/FiretrayWindow.jsm
@@ -69,6 +69,16 @@ firetray.Window.wndProc = function(hWnd, uMsg, wParam, lParam) { // filterWindow
} else if (uMsg === win32.WM_CLOSE) {
log.debug("wndProc CALLED with WM_CLOSE");
+ } else if (uMsg === win32.WM_SYSCOMMAND) {
+ // FIXME: not work with window.minimize() (menubar hidden)
+ log.debug("wndProc CALLED with WM_SYSCOMMAND wParam="+wParam);
+ if (wParam === win32.SC_MINIMIZE) {
+ log.debug("GOT ICONIFIED");
+ if (firetray.Window.hideOnMinimizeMaybe(wid)) {
+ return 0; // processed => preventDefault
+ }
+ }
+
} else if (uMsg === win32.WM_DESTROY) {
log.debug("wndProc CALLED with WM_DESTROY "+wid);
@@ -80,7 +90,7 @@ firetray.Window.wndProc = function(hWnd, uMsg, wParam, lParam) { // filterWindow
}
let procPrev = firetray.Handler.wndProcsOrig.get(wid);
- return user32.CallWindowProcW(procPrev, hWnd, uMsg, wParam, lParam);
+ return user32.CallWindowProcW(procPrev, hWnd, uMsg, wParam, lParam); // or DefWindowProcW
};
firetray.Window.attachWndProc = function(wid, hwnd) {
--
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