1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Merge pull request #1114 from redSpoutnik/fix-subtitlesync-textfield

Fix SubtitleSync-TextField behavior
This commit is contained in:
dkanada 2020-05-08 16:47:40 +09:00 committed by GitHub
commit 41ba09a316
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -32,8 +32,12 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html',
this.textContent = offset + 's'; 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 (event.key === 'Enter') {
// if input key is enter search for float pattern // if input key is enter search for float pattern
var inputOffset = /[-+]?\d+\.?\d*/g.exec(this.textContent); var inputOffset = /[-+]?\d+\.?\d*/g.exec(this.textContent);
@ -55,7 +59,7 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html',
this.hasFocus = false; this.hasFocus = false;
event.preventDefault(); event.preventDefault();
} else { } else {
// keep focus to prevent fade with bottom layout // keep focus to prevent fade with osd
this.hasFocus = true; this.hasFocus = true;
if (event.key.match(/[+-\d.s]/) === null) { if (event.key.match(/[+-\d.s]/) === null) {
event.preventDefault(); 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) { subtitleSyncSlider.updateOffset = function(percent) {
// default value is 0s = 50% // default value is 0s = 50%
this.value = percent === undefined ? 50 : percent; this.value = percent === undefined ? 50 : percent;
@ -140,12 +151,10 @@ define(['playbackManager', 'layoutManager', 'text!./subtitlesync.template.html',
/* eslint-disable no-fallthrough */ /* eslint-disable no-fallthrough */
switch (action) { switch (action) {
case undefined: case undefined:
// if showing subtitle sync is enabled // if showing subtitle sync is enabled and if there is an external subtitle stream enabled
if (playbackManager.isShowingSubtitleOffsetEnabled(player) && if (playbackManager.isShowingSubtitleOffsetEnabled(player) && playbackManager.canHandleOffsetOnCurrentSubtitle(player)) {
// if there is an external subtitle stream enabled // if no subtitle offset is defined or element has focus (offset being defined)
playbackManager.canHandleOffsetOnCurrentSubtitle(player)) { if (!(playbackManager.getPlayerSubtitleOffset(player) || subtitleSyncTextField.hasFocus)) {
// if no subtitle offset is defined
if (!playbackManager.getPlayerSubtitleOffset(player)) {
// set default offset to '0' = 50% // set default offset to '0' = 50%
subtitleSyncSlider.value = '50'; subtitleSyncSlider.value = '50';
subtitleSyncTextField.textContent = '0s'; subtitleSyncTextField.textContent = '0s';