summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mannehed <samuel@cendio.se>2018-07-30 10:49:42 +0200
committerSamuel Mannehed <samuel@cendio.se>2018-07-30 10:49:42 +0200
commitca31ac5736a35d78c8337ca59b63835dd197a37a (patch)
treeb3533a230a013f2888791d1854dcd1f8a8f8c7e7
parent2bbd15ccaf6e1cfa6dbfb8088e9f35f27a0f3e16 (diff)
downloadnovnc-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.js41
1 files changed, 17 insertions, 24 deletions
diff --git a/app/ui.js b/app/ui.js
index 083c845..587f895 100644
--- a/app/ui.js
+++ b/app/ui.js
@@ -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
* ==============