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";