]> git.proxmox.com Git - mirror_novnc.git/commitdiff
Save settings immediately
authorSamuel Mannehed <samuel@cendio.se>
Mon, 23 Jan 2017 11:20:45 +0000 (12:20 +0100)
committerSamuel Mannehed <samuel@cendio.se>
Fri, 27 Jan 2017 15:20:33 +0000 (16:20 +0100)
Retire the old settingsApply. This also allows UI logic to check the
state of things using the settings instead of having to look at the
values of HTML elements (we couldn't be sure if the changes were
applied yet or not).

app/ui.js
vnc.html

index 7212a751f9586256321011c97b8fe809bfc4ab6f..5fda992bd9f0694b9df7b056acc9d8dd72c9e509 100644 (file)
--- a/app/ui.js
+++ b/app/ui.js
@@ -375,14 +375,35 @@ var UI;
                 .addEventListener('click', UI.clipboardClear);
         },
 
+        // Add a call to save settings when the element changes,
+        // unless the optional parameter changeFunc is used instead.
+        addSettingChangeHandler: function(name, changeFunc) {
+            var settingElem = document.getElementById("noVNC_setting_" + name);
+            if (changeFunc === undefined) {
+                changeFunc = function () { UI.saveSetting(name); };
+            }
+            settingElem.addEventListener('change', changeFunc);
+        },
+
         addSettingsHandlers: function() {
             document.getElementById("noVNC_settings_button")
                 .addEventListener('click', UI.toggleSettingsPanel);
-            document.getElementById("noVNC_settings_apply")
-                .addEventListener('click', UI.settingsApply);
 
-            document.getElementById("noVNC_setting_resize")
-                .addEventListener('change', UI.enableDisableViewClip);
+            UI.addSettingChangeHandler('encrypt');
+            UI.addSettingChangeHandler('true_color');
+            UI.addSettingChangeHandler('cursor');
+            UI.addSettingChangeHandler('resize');
+            UI.addSettingChangeHandler('clip');
+            UI.addSettingChangeHandler('shared');
+            UI.addSettingChangeHandler('view_only');
+            UI.addSettingChangeHandler('host');
+            UI.addSettingChangeHandler('port');
+            UI.addSettingChangeHandler('path');
+            UI.addSettingChangeHandler('repeaterID');
+            UI.addSettingChangeHandler('logging');
+            UI.addSettingChangeHandler('logging', UI.updateLogging);
+            UI.addSettingChangeHandler('reconnect');
+            UI.addSettingChangeHandler('reconnect_delay');
         },
 
         addFullscreenHandlers: function() {
@@ -841,39 +862,6 @@ var UI;
             return val;
         },
 
-        // Save/apply settings when 'Apply' button is pressed
-        settingsApply: function() {
-            //Util.Debug(">> settingsApply");
-            UI.saveSetting('encrypt');
-            UI.saveSetting('true_color');
-            if (Util.browserSupportsCursorURIs()) {
-                UI.saveSetting('cursor');
-            }
-
-            UI.saveSetting('resize');
-
-            if (UI.getSetting('resize') === 'downscale' || UI.getSetting('resize') === 'scale') {
-                UI.forceSetting('clip', false);
-            }
-
-            UI.saveSetting('clip');
-            UI.saveSetting('shared');
-            UI.saveSetting('view_only');
-            UI.saveSetting('host');
-            UI.saveSetting('port');
-            UI.saveSetting('path');
-            UI.saveSetting('repeaterID');
-            UI.saveSetting('logging');
-            UI.saveSetting('reconnect');
-            UI.saveSetting('reconnect_delay');
-
-            // Settings with immediate (non-connected related) effect
-            UI.updateLogging();
-            UI.updateViewClip();
-            UI.updateViewDrag();
-            //Util.Debug("<< settingsApply");
-        },
-
 /* ------^-------
  *   /SETTINGS
  * ==============
@@ -897,6 +885,7 @@ var UI;
             UI.closeAllPanels();
             UI.openControlbar();
 
+            // Refresh UI elements from saved cookies
             UI.updateSetting('encrypt');
             UI.updateSetting('true_color');
             if (Util.browserSupportsCursorURIs()) {
@@ -928,13 +917,9 @@ var UI;
                 .classList.remove("noVNC_selected");
         },
 
-        // Toggle the settings menu:
-        //   On open, settings are refreshed from saved cookies.
-        //   On close, settings are applied
         toggleSettingsPanel: function() {
             if (document.getElementById('noVNC_settings')
                 .classList.contains("noVNC_open")) {
-                UI.settingsApply();
                 UI.closeSettingsPanel();
             } else {
                 UI.openSettingsPanel();
@@ -1053,9 +1038,9 @@ var UI;
         },
 
         connect: function(event, password) {
-            var host = document.getElementById('noVNC_setting_host').value;
-            var port = document.getElementById('noVNC_setting_port').value;
-            var path = document.getElementById('noVNC_setting_path').value;
+            var host = UI.getSetting('host');
+            var port = UI.getSetting('port');
+            var path = UI.getSetting('path');
 
             if (typeof password === 'undefined') {
                 password = WebUtil.getConfigVar('password');
@@ -1329,15 +1314,16 @@ var UI;
 
         // Handle special cases where clipping is forced on/off or locked
         enableDisableViewClip: function() {
-            var resizeSetting = document.getElementById('noVNC_setting_resize');
+            var resizeSetting = UI.getSetting('resize');
 
             if (UI.isSafari) {
                 // Safari auto-hides the scrollbars which makes them
                 // impossible to use in most cases
                 UI.setViewClip(true);
                 document.getElementById('noVNC_setting_clip').disabled = true;
-            } else if (resizeSetting.value === 'downscale' || resizeSetting.value === 'scale') {
+            } else if (resizeSetting === 'downscale' || resizeSetting === 'scale') {
                 // Disable clipping if we are scaling
+                UI.forceSetting('clip', false);
                 UI.setViewClip(false);
                 document.getElementById('noVNC_setting_clip').disabled = true;
             } else if (document.msFullscreenElement) {
index 5943aeedb5327fded889b0f82869ddbf3d342899..0048046d21b07bbbf398a6660f7a852d1cddf4a6 100644 (file)
--- a/vnc.html
+++ b/vnc.html
                             </li>
                         </ul></div>
                     </li>
-                    <li><hr></li>
-                    <li>
-                        <input type="button" id="noVNC_settings_apply" value="Apply" class="noVNC_submit" />
-                    </li>
                 </ul>
             </div>
             </div>