summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Mannehed <samuel@cendio.se>2018-08-16 10:31:09 +0200
committerGitHub <noreply@github.com>2018-08-16 10:31:09 +0200
commita793df3d6d472ba028075e4af5410af28a117c82 (patch)
treeb6457c1c7cc349f820514a72ad580da7623df4a2
parent6d1c036e0cefae57469cb425bcd2516921dacff8 (diff)
parent4ddcc7537fb00166a623b7e062496be4928a568d (diff)
downloadnovnc-a793df3d6d472ba028075e4af5410af28a117c82.tar.gz
Merge pull request #1118 from novnc/disabledragwhilescale
Turn off view drag when scaling
-rw-r--r--app/ui.js59
1 files changed, 19 insertions, 40 deletions
diff --git a/app/ui.js b/app/ui.js
index 83c2161..c03f8d3 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');
@@ -432,11 +432,7 @@ const UI = {
UI.keepControlbar();
}
- // State change disables viewport dragging.
- // It is enabled (toggled) by direct click on the button
- UI.setViewDrag(false);
-
- // State change also closes the password dialog
+ // State change closes the password dialog
document.getElementById('noVNC_password_dlg')
.classList.remove('noVNC_open');
},
@@ -1201,7 +1197,6 @@ const UI = {
document.body.msRequestFullscreen();
}
}
- UI.enableDisableViewClip();
UI.updateFullscreenButton();
},
@@ -1238,20 +1233,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
@@ -1259,18 +1259,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
* ==============
@@ -1280,16 +1268,7 @@ const UI = {
toggleViewDrag() {
if (!UI.rfb) return;
- const drag = UI.rfb.dragViewport;
- UI.setViewDrag(!drag);
- },
-
- // Set the view drag mode which moves the viewport on mouse drags
- setViewDrag(drag) {
- if (!UI.rfb) return;
-
- UI.rfb.dragViewport = drag;
-
+ UI.rfb.dragViewport = !UI.rfb.dragViewport;
UI.updateViewDrag();
},