Merge pull request #1118 from novnc/disabledragwhilescale

Turn off view drag when scaling
This commit is contained in:
Samuel Mannehed 2018-08-16 10:31:09 +02:00 committed by GitHub
commit a793df3d6d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -340,8 +340,8 @@ const UI = {
UI.addSettingChangeHandler('encrypt'); UI.addSettingChangeHandler('encrypt');
UI.addSettingChangeHandler('resize'); UI.addSettingChangeHandler('resize');
UI.addSettingChangeHandler('resize', UI.enableDisableViewClip);
UI.addSettingChangeHandler('resize', UI.applyResizeMode); UI.addSettingChangeHandler('resize', UI.applyResizeMode);
UI.addSettingChangeHandler('resize', UI.updateViewClip);
UI.addSettingChangeHandler('view_clip'); UI.addSettingChangeHandler('view_clip');
UI.addSettingChangeHandler('view_clip', UI.updateViewClip); UI.addSettingChangeHandler('view_clip', UI.updateViewClip);
UI.addSettingChangeHandler('shared'); UI.addSettingChangeHandler('shared');
@ -408,9 +408,9 @@ const UI = {
return; return;
} }
UI.enableDisableViewClip();
if (UI.connected) { if (UI.connected) {
UI.updateViewClip();
UI.disableSetting('encrypt'); UI.disableSetting('encrypt');
UI.disableSetting('shared'); UI.disableSetting('shared');
UI.disableSetting('host'); UI.disableSetting('host');
@ -432,11 +432,7 @@ const UI = {
UI.keepControlbar(); UI.keepControlbar();
} }
// State change disables viewport dragging. // State change closes the password dialog
// It is enabled (toggled) by direct click on the button
UI.setViewDrag(false);
// State change also closes the password dialog
document.getElementById('noVNC_password_dlg') document.getElementById('noVNC_password_dlg')
.classList.remove('noVNC_open'); .classList.remove('noVNC_open');
}, },
@ -1201,7 +1197,6 @@ const UI = {
document.body.msRequestFullscreen(); document.body.msRequestFullscreen();
} }
} }
UI.enableDisableViewClip();
UI.updateFullscreenButton(); UI.updateFullscreenButton();
}, },
@ -1238,20 +1233,25 @@ const UI = {
* VIEW CLIPPING * VIEW CLIPPING
* ------v------*/ * ------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() { updateViewClip() {
if (!UI.rfb) return; if (!UI.rfb) return;
const cur_clip = UI.rfb.clipViewport; const scaling = UI.getSetting('resize') === 'scale';
let new_clip = UI.getSetting('view_clip');
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 // Touch devices usually have shit scrollbars
new_clip = true; UI.forceSetting('view_clip', true);
} UI.rfb.clipViewport = true;
} else {
if (cur_clip !== new_clip) { UI.enableSetting('view_clip');
UI.rfb.clipViewport = new_clip; UI.rfb.clipViewport = UI.getSetting('view_clip');
} }
// Changing the viewport may change the state of // Changing the viewport may change the state of
@ -1259,18 +1259,6 @@ const UI = {
UI.updateViewDrag(); 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 * /VIEW CLIPPING
* ============== * ==============
@ -1280,16 +1268,7 @@ const UI = {
toggleViewDrag() { toggleViewDrag() {
if (!UI.rfb) return; if (!UI.rfb) return;
const drag = UI.rfb.dragViewport; UI.rfb.dragViewport = !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.updateViewDrag(); UI.updateViewDrag();
}, },