[Pkg-mozext-commits] [firetray] 232/399: fix start_hidden bug introduced in f86a3ac
David Prévot
taffit at alioth.debian.org
Tue Oct 29 18:23:49 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 2b2ce871a093e0a152b0b4e6a6ab11208b78174a
Author: foudfou <foudil.newbie+git at gmail.com>
Date: Sat May 12 15:24:14 2012 +0200
fix start_hidden bug introduced in f86a3ac
---
src/chrome/content/overlay.js | 40 ++++++++++++++++++-----
src/modules/linux/FiretrayWindow.jsm | 60 +++++-----------------------------
2 files changed, 40 insertions(+), 60 deletions(-)
diff --git a/src/chrome/content/overlay.js b/src/chrome/content/overlay.js
index a5bc1c4..e23c6c2 100644
--- a/src/chrome/content/overlay.js
+++ b/src/chrome/content/overlay.js
@@ -10,6 +10,10 @@ if ("undefined" == typeof(Cu)) var Cu = Components.utils;
// https://groups.google.com/group/mozilla.dev.extensions/browse_thread/thread/e89e9c2a834ff2b6#
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
@@ -17,17 +21,13 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
let init = firetray.Handler.initialized || firetray.Handler.init();
F.LOG("ONLOAD"); firetray.Handler.dumpWindows();
- let winId = firetray.Handler.registerWindow(win);
+ this.winId = firetray.Handler.registerWindow(win);
if (firetray.Handler.inMailApp && firetray.Messaging.initialized)
firetray.Messaging.updateMsgCount();
win.addEventListener('close', firetrayChrome.onClose, true);
-
- if (firetray.Handler.windows[winId].startHidden) {
- F.LOG('start_hidden');
- firetray.Handler.hideSingleWindow(winId);
- }
+ win.addEventListener('resize', firetrayChrome.onResize, true);
F.LOG('Firetray LOADED: ' + init);
return true;
@@ -58,13 +58,37 @@ 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) {
- let winId = firetray.Handler.getWindowIdFromChromeWindow(win);
- firetray.Handler.hideSingleWindow(winId);
+ firetray.Handler.hideSingleWindow(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;
+ }
+ }
}
+
};
// should be sufficient for a delayed Startup (no need for window.setTimeout())
diff --git a/src/modules/linux/FiretrayWindow.jsm b/src/modules/linux/FiretrayWindow.jsm
index cf8f401..a661b36 100644
--- a/src/modules/linux/FiretrayWindow.jsm
+++ b/src/modules/linux/FiretrayWindow.jsm
@@ -188,8 +188,8 @@ firetray.Window = {
return true;
},
- showSingleStateful: function(xid) {
- F.LOG("showSingleStateful xid="+xid);
+ show: function(xid) {
+ F.LOG("show xid="+xid);
// try to restore previous state. TODO: z-order respected ?
firetray.Window.restorePositionAndSize(xid);
@@ -205,22 +205,10 @@ firetray.Window = {
firetray.PopupMenu.hideSingleWindowItemAndSeparatorMaybe(xid);
firetray.Handler.showHideIcon();
},
- showSingleStatelessOnce: function(xid) {
- F.LOG("showSingleStateless");
- firetray.Window.setVisibility(xid, true);
-
- firetray.PopupMenu.hideSingleWindowItemAndSeparatorMaybe(xid);
- firetray.Handler.showHideIcon();
-
- firetray.Handler.windows[xid].show = firetray.Window.showSingleStateful; // reset
- },
-
- // NOTE: we keep using high-level cross-plat BaseWindow.visibility (instead of
- // gdk_window_show_unraised)
/* FIXME: hiding windows should also hide child windows */
- hideSingleStateful: function(xid) {
- F.LOG("hideSingleStateful");
+ hide: function(xid) {
+ F.LOG("hide");
firetray.Window.savePositionAndSize(xid);
firetray.Window.saveStates(xid);
@@ -231,21 +219,6 @@ firetray.Window = {
firetray.PopupMenu.showSingleWindowItem(xid);
firetray.Handler.showHideIcon();
},
- /**
- * hides without saving window states (position, size, ...) This is needed
- * when application starts hidden: as windows are not realized, their state
- * is not accurate.
- */
- hideSingleStatelessOnce: function(xid) {
- F.LOG("hideSingleStateless");
-
- firetray.Window.setVisibility(xid, false);
-
- firetray.PopupMenu.showSingleWindowItem(xid);
- firetray.Handler.showHideIcon();
-
- firetray.Handler.windows[xid].hide = firetray.Window.hideSingleStateful; // reset
- },
savePositionAndSize: function(xid) {
let gx = {}, gy = {}, gwidth = {}, gheight = {};
@@ -322,7 +295,7 @@ firetray.Window = {
},
setVisibility: function(xid, visibility) {
- F.WARN("setVisibility="+visibility);
+ F.LOG("setVisibility="+visibility);
let gtkWidget = ctypes.cast(firetray.Handler.gtkWindows.get(xid), gtk.GtkWidget.ptr);
if (visibility)
gtk.gtk_widget_show_all(gtkWidget);
@@ -512,6 +485,7 @@ firetray.Window = {
// break;
}
+ // NOTE: Gecko 8.0 provides the 'sizemodechange' event
if (isHidden) { // minimized
F.LOG("winStates="+winStates+", isHidden="+isHidden);
let hides_on_minimize = firetray.Utils.prefService.getBoolPref('hides_on_minimize');
@@ -585,17 +559,6 @@ firetray.Handler.registerWindow = function(win) {
return null;
}
- if (!firetray.Handler.appStarted &&
- firetray.Utils.prefService.getBoolPref('start_hidden')) {
- this.windows[xid].startHidden = true;
- this.windows[xid].hide = firetray.Window.hideSingleStatelessOnce;
- this.windows[xid].show = firetray.Window.showSingleStatelessOnce;
- } else {
- this.windows[xid].startHidden = false;
- this.windows[xid].hide = firetray.Window.hideSingleStateful;
- this.windows[xid].show = firetray.Window.showSingleStateful;
- }
-
F.LOG("AFTER"); firetray.Handler.dumpWindows();
return xid;
};
@@ -606,15 +569,8 @@ firetray.Handler.unregisterWindow = function(win) {
return firetray.Window.unregisterWindowByXID(xid);
};
-firetray.Handler.showSingleWindow = function(xid) {
- F.LOG("showSingleWindow xid="+xid);
- this.windows[xid].show(xid);
-};
-
-firetray.Handler.hideSingleWindow = function(xid) {
- F.LOG("hideSingleWindow xid="+xid);
- this.windows[xid].hide(xid);
-};
+firetray.Handler.showSingleWindow = firetray.Window.show;
+firetray.Handler.hideSingleWindow = firetray.Window.hide;
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