From 97e23ebbb29e87a8afe095da180e5ce9eb2908f8 Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Wed, 9 Jan 2019 13:05:25 +0100 Subject: [PATCH 1/3] Reorder browser and platform info functions Platform info functions grouped together and browser info functions grouped together. --- core/util/browser.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/core/util/browser.js b/core/util/browser.js index 32e101e5..b2b19fa2 100644 --- a/core/util/browser.js +++ b/core/util/browser.js @@ -53,6 +53,17 @@ export function isMac() { return navigator && !!(/mac/i).exec(navigator.platform); } +export function isWindows() { + return navigator && !!(/win/i).exec(navigator.platform); +} + +export function isIOS() { + return navigator && + (!!(/ipad/i).exec(navigator.platform) || + !!(/iphone/i).exec(navigator.platform) || + !!(/ipod/i).exec(navigator.platform)); +} + export function isIE() { return navigator && !!(/trident/i).exec(navigator.userAgent); } @@ -65,14 +76,3 @@ export function isFirefox() { return navigator && !!(/firefox/i).exec(navigator.userAgent); } -export function isWindows() { - return navigator && !!(/win/i).exec(navigator.platform); -} - -export function isIOS() { - return navigator && - (!!(/ipad/i).exec(navigator.platform) || - !!(/iphone/i).exec(navigator.platform) || - !!(/ipod/i).exec(navigator.platform)); -} - From 47b3eac82bb01518a39a7c69d0e409b3d2812aa1 Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Wed, 9 Jan 2019 13:08:01 +0100 Subject: [PATCH 2/3] Move UI.isSafari into core/util/browser.js This is where the rest of these kinds of functions are. --- app/ui.js | 9 ++------- core/util/browser.js | 5 +++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/ui.js b/app/ui.js index 9daa689d..4e4aec79 100644 --- a/app/ui.js +++ b/app/ui.js @@ -8,7 +8,7 @@ import * as Log from '../core/util/logging.js'; import _, { l10n } from './localization.js'; -import { isTouchDevice, dragThreshold } from '../core/util/browser.js'; +import { isTouchDevice, isSafari, dragThreshold } from '../core/util/browser.js'; import { setCapture, getPointerEvent } from '../core/util/events.js'; import KeyTable from "../core/input/keysym.js"; import keysyms from "../core/input/keysymdef.js"; @@ -31,7 +31,6 @@ const UI = { controlbarMouseDownClientY: 0, controlbarMouseDownOffsetY: 0, - isSafari: false, lastKeyboardinput: null, defaultKeyboardinputLen: 100, @@ -56,10 +55,6 @@ const UI = { // Render default UI and initialize settings menu start(callback) { - // Setup global variables first - UI.isSafari = (navigator.userAgent.indexOf('Safari') !== -1 && - navigator.userAgent.indexOf('Chrome') === -1); - UI.initSettings(); // Translate the DOM @@ -117,7 +112,7 @@ const UI = { initFullscreen() { // Only show the button if fullscreen is properly supported // * Safari doesn't support alphanumerical input while in fullscreen - if (!UI.isSafari && + if (!isSafari() && (document.documentElement.requestFullscreen || document.documentElement.mozRequestFullScreen || document.documentElement.webkitRequestFullscreen || diff --git a/core/util/browser.js b/core/util/browser.js index b2b19fa2..088997b1 100644 --- a/core/util/browser.js +++ b/core/util/browser.js @@ -64,6 +64,11 @@ export function isIOS() { !!(/ipod/i).exec(navigator.platform)); } +export function isSafari() { + return navigator && (navigator.userAgent.indexOf('Safari') !== -1 && + navigator.userAgent.indexOf('Chrome') === -1); +} + export function isIE() { return navigator && !!(/trident/i).exec(navigator.userAgent); } From ef64917a9091a9a12e8245099d6b0b0fbac2f6e5 Mon Sep 17 00:00:00 2001 From: Samuel Mannehed Date: Wed, 9 Jan 2019 13:20:29 +0100 Subject: [PATCH 3/3] Only disable scrollbars on Android and iOS Previously scrollbars were disabled on all touch devices. This meant that they were disabled on Windows when touch was detected. Windows does in fact have useful scrollbars even in touch mode. Fixes Issue #1172 --- app/ui.js | 7 ++++--- core/util/browser.js | 4 ++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/ui.js b/app/ui.js index 4e4aec79..a045bca6 100644 --- a/app/ui.js +++ b/app/ui.js @@ -8,7 +8,8 @@ import * as Log from '../core/util/logging.js'; import _, { l10n } from './localization.js'; -import { isTouchDevice, isSafari, dragThreshold } from '../core/util/browser.js'; +import { isTouchDevice, isSafari, isIOS, isAndroid, dragThreshold } + from '../core/util/browser.js'; import { setCapture, getPointerEvent } from '../core/util/events.js'; import KeyTable from "../core/input/keysym.js"; import keysyms from "../core/input/keysymdef.js"; @@ -1243,8 +1244,8 @@ const UI = { // 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 + } else if (isIOS() || isAndroid()) { + // iOS and Android usually have shit scrollbars UI.forceSetting('view_clip', true); UI.rfb.clipViewport = true; } else { diff --git a/core/util/browser.js b/core/util/browser.js index 088997b1..026a31ab 100644 --- a/core/util/browser.js +++ b/core/util/browser.js @@ -64,6 +64,10 @@ export function isIOS() { !!(/ipod/i).exec(navigator.platform)); } +export function isAndroid() { + return navigator && !!(/android/i).exec(navigator.userAgent); +} + export function isSafari() { return navigator && (navigator.userAgent.indexOf('Safari') !== -1 && navigator.userAgent.indexOf('Chrome') === -1);