From 62a2f4b17d6d7e5c53a8903c0ab3f7cccc9d335a Mon Sep 17 00:00:00 2001 From: Dmitry Lyzo Date: Sun, 28 Jun 2020 23:46:27 +0300 Subject: [PATCH] Rearrange keydown event handling --- src/components/subtitlesync/subtitlesync.js | 3 +++ src/controllers/playback/videoosd.js | 15 ++++++++++++--- src/scripts/keyboardNavigation.js | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index fb986ec348..c3c4b1bf69 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -65,6 +65,9 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', event.preventDefault(); } } + + // FIXME: TV layout will require special handling for navigation keys. But now field is not focusable + event.stopPropagation(); }); subtitleSyncTextField.blur = function() { diff --git a/src/controllers/playback/videoosd.js b/src/controllers/playback/videoosd.js index 9be5660b4a..60ae60e254 100644 --- a/src/controllers/playback/videoosd.js +++ b/src/controllers/playback/videoosd.js @@ -1080,7 +1080,7 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med */ var clickedElement; - function onWindowKeyDown(e) { + function onKeyDown(e) { clickedElement = e.srcElement; var key = keyboardnavigation.getKeyName(e); @@ -1194,6 +1194,13 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med } } + function onKeyDownCapture() { + // Restart hide timer if OSD is currently visible + if (currentVisibleMenu) { + showOsd(); + } + } + function onWindowMouseDown(e) { clickedElement = e.srcElement; } @@ -1330,7 +1337,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med }); showOsd(); inputManager.on(window, onInputCommand); - dom.addEventListener(window, 'keydown', onWindowKeyDown, { + document.addEventListener('keydown', onKeyDown); + dom.addEventListener(document, 'keydown', onKeyDownCapture, { capture: true }); dom.addEventListener(window, window.PointerEvent ? 'pointerdown' : 'mousedown', onWindowMouseDown, { @@ -1350,7 +1358,8 @@ define(['playbackManager', 'dom', 'inputManager', 'datetime', 'itemHelper', 'med statsOverlay.enabled(false); } - dom.removeEventListener(window, 'keydown', onWindowKeyDown, { + document.removeEventListener('keydown', onKeyDown); + dom.removeEventListener(document, 'keydown', onKeyDownCapture, { capture: true }); dom.removeEventListener(window, window.PointerEvent ? 'pointerdown' : 'mousedown', onWindowMouseDown, { diff --git a/src/scripts/keyboardNavigation.js b/src/scripts/keyboardNavigation.js index 6664afed53..6543207fee 100644 --- a/src/scripts/keyboardNavigation.js +++ b/src/scripts/keyboardNavigation.js @@ -78,7 +78,7 @@ export function isNavigationKey(key) { } export function enable() { - document.addEventListener('keydown', function (e) { + window.addEventListener('keydown', function (e) { const key = getKeyName(e); // Ignore navigation keys for non-TV