From 481fd5ae4c44fa2264d5613f5e80ea1f3ce2bd76 Mon Sep 17 00:00:00 2001 From: viliusle Date: Sat, 3 Apr 2021 23:06:56 +0300 Subject: [PATCH] exit confirmation --- src/js/core/base-gui.js | 14 ++++++++++++++ src/js/core/base-layers.js | 2 +- src/js/modules/tools/settings.js | 4 ++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/js/core/base-gui.js b/src/js/core/base-gui.js index 0644ebe..f0f51ad 100644 --- a/src/js/core/base-gui.js +++ b/src/js/core/base-gui.js @@ -4,6 +4,7 @@ */ import config from './../config.js'; +import Base_layers_class from './base-layers.js'; import GUI_tools_class from './gui/gui-tools.js'; import GUI_preview_class from './gui/gui-preview.js'; import GUI_colors_class from './gui/gui-colors.js'; @@ -12,6 +13,7 @@ import GUI_information_class from './gui/gui-information.js'; import GUI_details_class from './gui/gui-details.js'; import GUI_menu_class from './gui/gui-menu.js'; import Tools_translate_class from './../modules/tools/translate.js'; +import Tools_settings_class from './../modules/tools/settings.js'; import Helper_class from './../libs/helpers.js'; import alertify from './../../../node_modules/alertifyjs/build/alertify.min.js'; @@ -30,6 +32,7 @@ class Base_gui_class { instance = this; this.Helper = new Helper_class(); + this.Base_layers = new Base_layers_class(); //last used menu id this.last_menu = ''; @@ -62,6 +65,7 @@ class Base_gui_class { this.GUI_details = new GUI_details_class(this); this.GUI_menu = new GUI_menu_class(); this.Tools_translate = new Tools_translate_class(); + this.Tools_settings = new Tools_settings_class(); this.modules = {}; } @@ -205,6 +209,16 @@ class Base_gui_class { config.need_render = true; }, false); this.check_canvas_offset(); + + //confirmation on exit + var exit_confirm = this.Tools_settings.get_setting('exit_confirm'); + window.addEventListener('beforeunload', function (e) { + if(exit_confirm && (config.layers.length > 1 || _this.Base_layers.is_layer_empty(config.layer.id) == false)){ + e.preventDefault(); + e.returnValue = ''; + } + return undefined; + }); } check_canvas_offset() { diff --git a/src/js/core/base-layers.js b/src/js/core/base-layers.js index 0869ba8..4234be8 100644 --- a/src/js/core/base-layers.js +++ b/src/js/core/base-layers.js @@ -501,7 +501,7 @@ class Base_layers_class { is_layer_empty(id) { var link = this.get_layer(id); - if (link.width == 0 && link.height == 0 && link.data == null) { + if ((link.width == 0 || link.width === null) && (link.height == 0 || link.height === null) && link.data == null) { return true; } diff --git a/src/js/modules/tools/settings.js b/src/js/modules/tools/settings.js index 0c37933..7bf3a65 100644 --- a/src/js/modules/tools/settings.js +++ b/src/js/modules/tools/settings.js @@ -21,6 +21,7 @@ class Tools_settings_class { var snap = this.get_setting('snap'); var guides = this.get_setting('guides'); var safe_search = this.get_setting('safe_search'); + var exit_confirm = this.get_setting('exit_confirm'); var settings = { title: 'Settings', @@ -33,6 +34,7 @@ class Tools_settings_class { {name: "snap", title: "Enable snap:", value: snap}, {name: "guides", title: "Enable guides:", value: guides}, {name: "safe_search", title: "Safe search:", value: safe_search}, + {name: "exit_confirm", title: "Exit confirmation:", value: exit_confirm}, ], on_change: function (params) { this.Base_gui.change_theme(params.theme); @@ -57,6 +59,7 @@ class Tools_settings_class { this.save_setting('snap', params.snap); this.save_setting('guides', params.guides); this.save_setting('safe_search', params.safe_search); + this.save_setting('exit_confirm', params.exit_confirm); //update config config.TRANSPARENCY = this.get_setting('transparency'); @@ -102,6 +105,7 @@ class Tools_settings_class { 'snap': true, 'guides': true, 'safe_search': false, + 'exit_confirm': true, }; var value = this.Helper.getCookie(key);