Merge enableDisableViewClip and updateViewClip

Makes the code easier to follow and makes sure that viewDrag is
properly disabled when scaling. Fixes #1110.
This commit is contained in:
Samuel Mannehed 2018-07-30 10:49:42 +02:00
parent 2bbd15ccaf
commit 4ddcc7537f
1 changed files with 17 additions and 24 deletions

View File

@ -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
* ==============