[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