From be8a1baa27aa6f17f2d1a6cf38cbece6161a6f2f Mon Sep 17 00:00:00 2001 From: redSpoutnik <15638041+redSpoutnik@users.noreply.github.com> Date: Wed, 22 Apr 2020 15:56:05 +0200 Subject: [PATCH 1/2] Fix SubtitleSync-TextField behavior --- src/components/subtitlesync/subtitlesync.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 29d110f12e..2d4f4afa74 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -32,8 +32,12 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', this.textContent = offset + "s"; }; - subtitleSyncTextField.addEventListener("keypress", function(event) { + subtitleSyncTextField.addEventListener("click", function () { + // keep focus to prevent fade with osd + this.hasFocus = true; + }); + subtitleSyncTextField.addEventListener("keydown", function(event) { if (event.key === "Enter") { // if input key is enter search for float pattern var inputOffset = /[-+]?\d+\.?\d*/g.exec(this.textContent); @@ -55,7 +59,7 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', this.hasFocus = false; event.preventDefault(); } else { - // keep focus to prevent fade with bottom layout + // keep focus to prevent fade with osd this.hasFocus = true; if (event.key.match(/[+-\d.s]/) === null) { event.preventDefault(); @@ -63,6 +67,13 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', } }); + subtitleSyncTextField.blur = function() { + // prevent textfield to blur while element has focus + if (!this.hasFocus && this.prototype) { + this.prototype.blur(); + } + }; + subtitleSyncSlider.updateOffset = function(percent) { // default value is 0s = 50% this.value = percent === undefined ? 50 : percent; @@ -145,7 +156,9 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', // if there is an external subtitle stream enabled playbackManager.canHandleOffsetOnCurrentSubtitle(player)) { // if no subtitle offset is defined - if (!playbackManager.getPlayerSubtitleOffset(player)) { + if (!(playbackManager.getPlayerSubtitleOffset(player) || + // or being defined (element has focus) + subtitleSyncTextField.hasFocus)) { // set default offset to '0' = 50% subtitleSyncSlider.value = "50"; subtitleSyncTextField.textContent = "0s"; From 3a815709cff068ffebea4db1e8f3c69ead7a4468 Mon Sep 17 00:00:00 2001 From: redSpoutnik <15638041+redSpoutnik@users.noreply.github.com> Date: Fri, 24 Apr 2020 16:49:13 +0200 Subject: [PATCH 2/2] subtitlesync toggle: make one-line conditions --- src/components/subtitlesync/subtitlesync.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/components/subtitlesync/subtitlesync.js b/src/components/subtitlesync/subtitlesync.js index 2d4f4afa74..4c9eb88fb6 100644 --- a/src/components/subtitlesync/subtitlesync.js +++ b/src/components/subtitlesync/subtitlesync.js @@ -151,14 +151,10 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html', /* eslint-disable no-fallthrough */ switch (action) { case undefined: - // if showing subtitle sync is enabled - if (playbackManager.isShowingSubtitleOffsetEnabled(player) && - // if there is an external subtitle stream enabled - playbackManager.canHandleOffsetOnCurrentSubtitle(player)) { - // if no subtitle offset is defined - if (!(playbackManager.getPlayerSubtitleOffset(player) || - // or being defined (element has focus) - subtitleSyncTextField.hasFocus)) { + // if showing subtitle sync is enabled and if there is an external subtitle stream enabled + if (playbackManager.isShowingSubtitleOffsetEnabled(player) && playbackManager.canHandleOffsetOnCurrentSubtitle(player)) { + // if no subtitle offset is defined or element has focus (offset being defined) + if (!(playbackManager.getPlayerSubtitleOffset(player) || subtitleSyncTextField.hasFocus)) { // set default offset to '0' = 50% subtitleSyncSlider.value = "50"; subtitleSyncTextField.textContent = "0s";