diff --git a/client/dcwebui.js b/client/dcwebui.js index b86246b..a39f57b 100644 --- a/client/dcwebui.js +++ b/client/dcwebui.js @@ -682,6 +682,7 @@ menu.reset = function() { this.clear(); this.add(joinparts_getstr(), toggle_joinparts); this.add(desktop_notifications_fmtstr(), desktop_notifications_toggle); + this.add(warnonclose_fmtstr(), warnonclose_toggle); this.add(timestamp_display(), timestamp_toggle); }; @@ -810,6 +811,8 @@ var timestamp_format_index = 0; var mainchat_unread_count = 0; +var should_warn_on_close = false; + var timestamp_display = function() { return "Timestamp format: " + timestamp_names[timestamp_format_index]; }; @@ -821,6 +824,17 @@ var timestamp_toggle = function(ev) { $el.innerHTML = timestamp_display(); }; +var warnonclose_fmtstr = function() { + return (should_warn_on_close ? "☑" : "☐") + " Confirm closing window"; +}; + +var warnonclose_toggle = function(ev) { + var $el = ev.target || ev.srcElement; + should_warn_on_close = !should_warn_on_close; + persistence_set("warnonclose", should_warn_on_close); + $el.innerHTML = warnonclose_fmtstr(); +}; + var desktop_notifications_enabled = false; var desktop_notifications_fmtstr = function() { @@ -982,7 +996,7 @@ window.onload = function() { }; window.onbeforeunload = function (e) { - if (hub_state === STATE_ACTIVE) { + if (should_warn_on_close && hub_state === STATE_ACTIVE) { // n.b. recent Firefox / Chrome don't display the custom message here. var confirmationMessage = "Still connected to the hub \"" + hub_hubname + "\".\nAre you sure you want to close?"; e.returnValue = confirmationMessage; @@ -993,6 +1007,8 @@ window.onload = function() { timestamp_format_index = persistence_get("timestamps", 0); + should_warn_on_close = persistence_get("warnonclose"); + desktop_notifications_enabled = persistence_get("popups"); if (desktop_notifications_enabled) { // prompt for permissions