Skip to content
This repository has been archived by the owner on Oct 16, 2020. It is now read-only.

Commit

Permalink
option to hide only last window (#24)
Browse files Browse the repository at this point in the history
  • Loading branch information
foudfou committed Sep 10, 2012
1 parent 97e488e commit 90ee9f8
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 9 deletions.
5 changes: 3 additions & 2 deletions src/chrome/content/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,9 @@ var firetrayUIOptions = {
let hides_on_close = document.getElementById("ui_hides_on_close").checked;
let hides_on_minimize = document.getElementById("ui_hides_on_minimize").checked;
log.debug("hides_on_close="+hides_on_close+", hides_on_minimize="+hides_on_minimize);
document.getElementById('ui_hides_single_window').disabled =
!(hides_on_close || hides_on_minimize);
let doDisable = !(hides_on_close || hides_on_minimize);
document.getElementById('ui_hides_single_window').disabled = doDisable;
document.getElementById('ui_hides_last_only').disabled = doDisable;
},

updateScrollOptions: function() {
Expand Down
5 changes: 5 additions & 0 deletions src/chrome/content/options.xul
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<preference id="pref_hides_on_close" name="extensions.firetray.hides_on_close" type="bool"/>
<preference id="pref_hides_on_minimize" name="extensions.firetray.hides_on_minimize" type="bool"/>
<preference id="pref_hides_single_window" name="extensions.firetray.hides_single_window" type="bool"/>
<preference id="pref_hides_last_only" name="extensions.firetray.hides_last_only" type="bool"/>
<preference id="pref_start_hidden" name="extensions.firetray.start_hidden" type="bool"/>
<preference id="pref_show_activates" name="extensions.firetray.show_activates" type="bool"/>
<preference id="pref_remember_desktop" name="extensions.firetray.remember_desktop" type="bool"/>
Expand All @@ -41,6 +42,10 @@
label="&hides_single_window.label;"
accesskey="&hides_single_window.accesskey;"
tooltiptext="&hides_single_window.tooltip;"/>
<checkbox id="ui_hides_last_only" preference="pref_hides_last_only"
label="&hides_last_only.label;"
accesskey="&hides_last_only.accesskey;"
tooltiptext="&hides_last_only.tooltip;"/>
<checkbox id="ui_start_hidden" preference="pref_start_hidden"
label="&start_hidden.label;"
accesskey="&start_hidden.accesskey;"/>
Expand Down
17 changes: 11 additions & 6 deletions src/chrome/content/overlay.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,13 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
return true;
},


/* NOTE: don't do firetray.Handler.initialized=false here, otherwise after a
window close, a new window will create a new handler (and hence, a new tray
icon) */
onQuit: function(win) {
firetray.Handler.unregisterWindow(win);

/* NOTE: don't do firetray.Handler.initialized=false here, otherwise after
a window close, a new window will create a new handler (and hence, a new
tray icon) */
log.info("windowsCount="+firetray.Handler.windowsCount+", visibleWindowsCount="+firetray.Handler.visibleWindowsCount);
log.debug('Firetray UNLOADED !');
},

Expand All @@ -52,9 +53,13 @@ var firetrayChrome = { // each new window gets a new firetrayChrome !
throw new TypeError('originalTarget not a ChromeWindow');

let hides_on_close = firetray.Utils.prefService.getBoolPref('hides_on_close');
let hides_single_window = firetray.Utils.prefService.getBoolPref('hides_single_window');
log.debug('hides_on_close: '+hides_on_close+', hides_single_window='+hides_single_window);
log.debug('hides_on_close: '+hides_on_close);
if (hides_on_close) {
let hides_single_window = firetray.Utils.prefService.getBoolPref('hides_single_window');
let hides_last_only = firetray.Utils.prefService.getBoolPref('hides_last_only');
log.debug('hides_single_window='+hides_single_window+', windowsCount='+firetray.Handler.windowsCount);
if (hides_last_only && (firetray.Handler.windowsCount > 1)) return;

if (hides_single_window) {
firetray.Handler.hideWindow(firetrayChrome.winId);
} else
Expand Down
3 changes: 3 additions & 0 deletions src/chrome/locale/en-US/options.dtd
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
<!ENTITY hides_single_window.label "Hide windows individually">
<!ENTITY hides_single_window.tooltip "not all windows at once">
<!ENTITY hides_single_window.accesskey "H">
<!ENTITY hides_last_only.label "Only last window can be hidden">
<!ENTITY hides_last_only.tooltip "other windows will be closed (terminated)">
<!ENTITY hides_last_only.accesskey "O">
<!ENTITY start_hidden.label "Start application hidden to tray">
<!ENTITY start_hidden.accesskey "S">
<!ENTITY show_activates.label "Activate restored windows">
Expand Down
1 change: 1 addition & 0 deletions src/defaults/preferences/prefs.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ pref("extensions.firetray.firstrun", true);
pref("extensions.firetray.hides_on_close", true);
pref("extensions.firetray.hides_on_minimize", true);
pref("extensions.firetray.hides_single_window", true);
pref("extensions.firetray.hides_last_only", true);
pref("extensions.firetray.start_hidden", false);
pref("extensions.firetray.show_activates", false);
pref("extensions.firetray.remember_desktop", false);
Expand Down
4 changes: 3 additions & 1 deletion src/modules/linux/FiretrayWindow.jsm
Original file line number Diff line number Diff line change
Expand Up @@ -206,9 +206,11 @@ firetray.Window = {
throw new DeleteError();
firetray.Handler.gtkWindows.remove(xid);
firetray.Handler.gdkWindows.remove(xid);
firetray.PopupMenu.removeWindowItem(xid);
firetray.Handler.windowsCount -= 1;
firetray.Handler.visibleWindowsCount -= 1;

firetray.PopupMenu.removeWindowItem(xid);

log.debug("window "+xid+" unregistered");
return true;
},
Expand Down

0 comments on commit 90ee9f8

Please sign in to comment.