yet another attempt to fix restore maximized window. This is tricky because it

can break restore minimized (hides_on_minimize off)
This commit is contained in:
foudfou 2013-01-16 23:48:25 +01:00
parent 601554a63f
commit d77724d46b
1 changed files with 13 additions and 8 deletions

View File

@ -290,10 +290,17 @@ firetray.Window = {
log.debug("save: windowStates="+winStates);
},
// NOTE: fluxbox bug probably: if hidden and restored iconified, then
// switching to desktop de-iconifies it ?!
restoreStates: function(xid) {
let winStates = firetray.Handler.windows[xid].savedStates;
log.debug("restored WindowStates: " + winStates);
if (winStates & FIRETRAY_XWINDOW_HIDDEN) {
firetray.Handler.windows[xid].chromeWin.minimize();
log.debug("restored minimized");
}
/* helps prevent getting iconify event following show() */
if (firetray.Utils.prefService.getBoolPref('hides_on_minimize'))
firetray.Handler.windows[xid].chromeWin.restore(); // nsIDOMChromeWindow.idl
@ -303,11 +310,6 @@ firetray.Window = {
log.debug("restored maximized");
}
if (winStates & FIRETRAY_XWINDOW_HIDDEN) {
firetray.Handler.windows[xid].chromeWin.minimize();
log.debug("restored minimized");
}
delete firetray.Handler.windows[xid].savedStates;
},
@ -522,6 +524,8 @@ firetray.Window = {
case x11.MapNotify:
log.debug("MapNotify");
let gdkWinStateOnMap = gdk.gdk_window_get_state(firetray.Handler.gdkWindows.get(xid));
log.debug("gdkWinState="+gdkWinStateOnMap+" for xid="+xid);
let win = firetray.Handler.windows[xid];
if (!win.visible && firetray.Handler.appStarted) { // happens when hidden app called from command line
log.warn("window not visible, correcting visibility");
@ -531,10 +535,11 @@ firetray.Window = {
break;
case x11.UnmapNotify: // for catching 'iconify'
let gdkWinState = gdk.gdk_window_get_state(firetray.Handler.gdkWindows.get(xid));
log.debug("gdkWinState="+gdkWinState+" for xid="+xid);
log.debug("UnmapNotify");
let gdkWinStateOnUnmap = gdk.gdk_window_get_state(firetray.Handler.gdkWindows.get(xid));
log.debug("gdkWinStateOnUnmap="+gdkWinStateOnUnmap+" for xid="+xid);
// NOTE: Gecko 8.0 provides the 'sizemodechange' event
if (gdkWinState === gdk.GDK_WINDOW_STATE_ICONIFIED) {
if (gdkWinStateOnUnmap & gdk.GDK_WINDOW_STATE_ICONIFIED) {
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');