@ -22,7 +22,7 @@ window.addEventListener("load", function() {
import * as Log from '../core/util/logging.js' ;
import * as Log from '../core/util/logging.js' ;
import _ , { l10n } from './localization.js' ;
import _ , { l10n } from './localization.js' ;
import { isTouchDevice , isSafari , isIOS, isAndroid , dragThreshold }
import { isTouchDevice , isSafari , hasScrollbarGutter , dragThreshold }
from '../core/util/browser.js' ;
from '../core/util/browser.js' ;
import { setCapture , getPointerEvent } from '../core/util/events.js' ;
import { setCapture , getPointerEvent } from '../core/util/events.js' ;
import KeyTable from "../core/input/keysym.js" ;
import KeyTable from "../core/input/keysym.js" ;
@ -1618,8 +1618,9 @@ const UI = {
// Can't be clipping if viewport is scaled to fit
// Can't be clipping if viewport is scaled to fit
UI . forceSetting ( 'view_clip' , false ) ;
UI . forceSetting ( 'view_clip' , false ) ;
UI . rfb . clipViewport = false ;
UI . rfb . clipViewport = false ;
} else if ( isIOS ( ) || isAndroid ( ) ) {
} else if ( ! hasScrollbarGutter ) {
// iOS and Android usually have shit scrollbars
// Some platforms have scrollbars that are difficult
// to use in our case, so we always use our own panning
UI . forceSetting ( 'view_clip' , true ) ;
UI . forceSetting ( 'view_clip' , true ) ;
UI . rfb . clipViewport = true ;
UI . rfb . clipViewport = true ;
} else {
} else {