diff options
author | Samuel Mannehed <samuel@cendio.se> | 2018-07-30 10:49:42 +0200 |
---|---|---|
committer | Samuel Mannehed <samuel@cendio.se> | 2018-07-30 10:49:42 +0200 |
commit | ca31ac5736a35d78c8337ca59b63835dd197a37a (patch) | |
tree | b3533a230a013f2888791d1854dcd1f8a8f8c7e7 | |
parent | 2bbd15ccaf6e1cfa6dbfb8088e9f35f27a0f3e16 (diff) | |
download | novnc-disabledragwhilescale.tar.gz |
Merge enableDisableViewClip and updateViewClipdisabledragwhilescale
Makes the code easier to follow and makes sure that viewDrag is
properly disabled when scaling. Fixes #1110.
-rw-r--r-- | app/ui.js | 41 |
1 files changed, 17 insertions, 24 deletions
@@ -340,8 +340,8 @@ const UI = { UI.addSettingChangeHandler('encrypt'); UI.addSettingChangeHandler('resize'); - UI.addSettingChangeHandler('resize', UI.enableDisableViewClip); UI.addSettingChangeHandler('resize', UI.applyResizeMode); + UI.addSettingChangeHandler('resize', UI.updateViewClip); UI.addSettingChangeHandler('view_clip'); UI.addSettingChangeHandler('view_clip', UI.updateViewClip); UI.addSettingChangeHandler('shared'); @@ -408,9 +408,9 @@ const UI = { return; } - UI.enableDisableViewClip(); - if (UI.connected) { + UI.updateViewClip(); + UI.disableSetting('encrypt'); UI.disableSetting('shared'); UI.disableSetting('host'); @@ -1236,20 +1236,25 @@ const UI = { * VIEW CLIPPING * ------v------*/ - // Update parameters that depend on the viewport clip setting + // Update viewport clipping property for the connection. The normal + // case is to get the value from the setting. There are special cases + // for when the viewport is scaled or when a touch device is used. updateViewClip() { if (!UI.rfb) return; - const cur_clip = UI.rfb.clipViewport; - let new_clip = UI.getSetting('view_clip'); + const scaling = UI.getSetting('resize') === 'scale'; - if (isTouchDevice) { + if (scaling) { + // Can't be clipping if viewport is scaled to fit + UI.forceSetting('view_clip', false); + UI.rfb.clipViewport = false; + } else if (isTouchDevice) { // Touch devices usually have shit scrollbars - new_clip = true; - } - - if (cur_clip !== new_clip) { - UI.rfb.clipViewport = new_clip; + UI.forceSetting('view_clip', true); + UI.rfb.clipViewport = true; + } else { + UI.enableSetting('view_clip'); + UI.rfb.clipViewport = UI.getSetting('view_clip'); } // Changing the viewport may change the state of @@ -1257,18 +1262,6 @@ const UI = { UI.updateViewDrag(); }, - // Handle special cases where viewport clipping is locked - enableDisableViewClip() { - const resizeSetting = UI.getSetting('resize'); - if (isTouchDevice) { - UI.forceSetting('view_clip', true); - } else if (resizeSetting === 'scale') { - UI.disableSetting('view_clip'); - } else { - UI.enableSetting('view_clip'); - } - }, - /* ------^------- * /VIEW CLIPPING * ============== |