diff --git a/client/src/components/video.vue b/client/src/components/video.vue
index 19dad1a2..229eff57 100644
--- a/client/src/components/video.vue
+++ b/client/src/components/video.vue
@@ -65,7 +65,7 @@
@@ -367,12 +367,11 @@
get is_touch_device() {
return (
- // check if the device has a touch screen
+ // detect if the device has touch support
('ontouchstart' in window || navigator.maxTouchPoints > 0) &&
- // we also check if the device has a pointer
- !window.matchMedia('(pointer:fine)').matches &&
- // and is capable of hover, then it probably has a mouse
- !window.matchMedia('(hover:hover)').matches
+ // the primary input mechanism includes a pointing device of
+ // limited accuracy, such as a finger on a touchscreen.
+ window.matchMedia('(pointer: coarse)').matches
)
}
@@ -822,64 +821,20 @@
@Watch('hosting')
@Watch('locked')
onFocus() {
+ // focus opens the keyboard on mobile
+ if (!this.is_touch_device) {
+ return
+ }
+
// in order to capture key events, overlay must be focused
if (this.focused && this.hosting && !this.locked) {
this._overlay.focus()
}
}
- //
- // mobile keyboard
- //
-
- kbdShow = false
- kbdOpen = false
-
- showMobileKeyboard() {
- // skip if not a touch device
- if (!this.is_touch_device) return
-
- this.kbdShow = true
- this.kbdOpen = false
-
- const overlay = this.$refs.overlay as HTMLTextAreaElement
- overlay.focus()
- window.visualViewport?.addEventListener('resize', this.onVisualViewportResize)
- }
-
- hideMobileKeyboard() {
- // skip if not a touch device
- if (!this.is_touch_device) return
-
- this.kbdShow = false
- this.kbdOpen = false
-
- const overlay = this.$refs.overlay as HTMLTextAreaElement
- window.visualViewport?.removeEventListener('resize', this.onVisualViewportResize)
- overlay.blur()
- }
-
- toggleMobileKeyboard() {
- // skip if not a touch device
- if (!this.is_touch_device) return
-
- if (this.kbdShow) {
- this.hideMobileKeyboard()
- } else {
- this.showMobileKeyboard()
- }
- }
-
- // visual viewport resize event is fired when keyboard is opened or closed
- // android does not blur textarea when keyboard is closed, so we need to do it manually
- onVisualViewportResize() {
- if (!this.kbdShow) return
-
- if (!this.kbdOpen) {
- this.kbdOpen = true
- } else {
- this.hideMobileKeyboard()
- }
+ openMobileKeyboard() {
+ // focus opens the keyboard on mobile
+ this._overlay.focus()
}
}