when clicking on the tray icon, if all windows visible, activate last

registered window
This commit is contained in:
foudfou 2012-05-12 16:36:51 +02:00
parent 776d3acddf
commit 97dcbc8ca5
2 changed files with 9 additions and 7 deletions

View File

@ -131,16 +131,16 @@ firetray.StatusIcon = {
need to abandon 'this' in PopupMenu.popup() */
this.callbacks.menuPopup = gtk.GCallbackMenuPopup_t(firetray.PopupMenu.popup);
gobject.g_signal_connect(this.trayIcon, "popup-menu",
firetray.StatusIcon.callbacks.menuPopup, firetray.PopupMenu.menu);
firetray.StatusIcon.callbacks.menuPopup, firetray.PopupMenu.menu);
this.callbacks.onScroll = gtk.GCallbackOnScroll_t(firetray.StatusIcon.onScroll);
gobject.g_signal_connect(this.trayIcon, "scroll-event",
firetray.StatusIcon.callbacks.onScroll, null);
firetray.StatusIcon.callbacks.onScroll, null);
F.LOG("showHideAllWindows: "+firetray.Handler.hasOwnProperty("showHideAllWindows"));
this.callbacks.iconActivate = gtk.GCallbackStatusIconActivate_t(
firetray.Handler.showHideAllWindows);
let handlerId = gobject.g_signal_connect(firetray.StatusIcon.trayIcon,
"activate", firetray.StatusIcon.callbacks.iconActivate, null);
"activate", firetray.StatusIcon.callbacks.iconActivate, null);
F.LOG("g_connect activate="+handlerId);
},

View File

@ -201,7 +201,8 @@ firetray.Window = {
// after show
firetray.Window.restoreDesktop(xid);
firetray.Window.activate(xid);
if (firetray.Utils.prefService.getBoolPref('show_activates'))
firetray.Window.activate(xid);
firetray.PopupMenu.hideSingleWindowItemAndSeparatorMaybe(xid);
firetray.Handler.showHideIcon();
@ -330,8 +331,6 @@ firetray.Window = {
* raises window on top and give focus.
*/
activate: function(xid) {
if (!firetray.Utils.prefService.getBoolPref('show_activates'))
return;
gtk.gtk_window_present(firetray.Handler.gtkWindows.get(xid));
F.LOG("window raised");
},
@ -582,7 +581,10 @@ firetray.Handler.showHideAllWindows = function(gtkStatusIcon, userData) {
F.LOG("windowsCount="+firetray.Handler.windowsCount);
let visibilityRate = firetray.Handler.visibleWindowsCount/firetray.Handler.windowsCount;
F.LOG("visibilityRate="+visibilityRate);
if ((0.5 < visibilityRate) && (visibilityRate < 1)
if (visibilityRate === 1) {
for(var key in firetray.Handler.windows);
firetray.Window.activate(key);
} else if ((0.5 < visibilityRate) && (visibilityRate < 1)
|| visibilityRate === 0) // TODO: should be configurable
firetray.Handler.showAllWindows();
else