diff --git a/src/components/scrollManager.js b/src/components/scrollManager.js index 57107ed185..4ba696d744 100644 --- a/src/components/scrollManager.js +++ b/src/components/scrollManager.js @@ -158,11 +158,22 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage */ function getScrollableParent(element, vertical) { if (element) { + var nameScroll = "scrollWidth"; + var nameClient = "clientWidth"; + var nameClass = "scrollX"; + + if (vertical) { + nameScroll = "scrollHeight"; + nameClient = "clientHeight"; + nameClass = "scrollY"; + } + var parent = element.parentElement; while (parent) { - if ((!vertical && parent.scrollWidth > parent.clientWidth && parent.classList.contains("scrollX")) || - (vertical && parent.scrollHeight > parent.clientHeight && parent.classList.contains("scrollY"))) { + // Skip 'emby-scroller' because it scrolls by itself + if (!parent.classList.contains("emby-scroller") && + parent[nameScroll] > parent[nameClient] && parent.classList.contains(nameClass)) { return parent; } diff --git a/src/dashboard.html b/src/dashboard.html index 4888c1110f..7180b94872 100644 --- a/src/dashboard.html +++ b/src/dashboard.html @@ -2,7 +2,7 @@
- -
+

${HeaderActiveDevices}

chevron_right diff --git a/src/elements/emby-slider/emby-slider.js b/src/elements/emby-slider/emby-slider.js index 13472b4d5d..bcadc48b70 100644 --- a/src/elements/emby-slider/emby-slider.js +++ b/src/elements/emby-slider/emby-slider.js @@ -254,24 +254,40 @@ define(['browser', 'dom', 'layoutManager', 'keyboardnavigation', 'css!./emby-sli cancelable: false })); - // Reset dragging (from 'input' event) so that real dragging can be detected - var range = this; - setTimeout(function () { - range.dragging = false; - }, 0); + // Prevent 'pointermove' and 'click' after 'touch*' + // FIXME: Still have some 'pointermove' and 'click' that bypass 'touchstart' + e.preventDefault(); + }, { + capture: true + }); + + dom.addEventListener(this, 'touchmove', function (e) { + if (!this.touched || e.targetTouches.length !== 1) { + return; + } + + var fraction = mapClientToFraction(this, e.targetTouches[0].clientX); + this.value = mapFractionToValue(this, fraction); + + this.dispatchEvent(new Event('input', { + bubbles: true, + cancelable: false + })); }, { passive: true }); dom.addEventListener(this, 'touchend', function (e) { - if (!this.dragging) { - this.dispatchEvent(new Event('change', { + var range = this; + + setTimeout(function () { + range.touched = false; + + range.dispatchEvent(new Event('change', { bubbles: true, cancelable: false })); - } - - this.touched = false; + }, 0); }, { passive: true }); diff --git a/src/encodingsettings.html b/src/encodingsettings.html index 757d08f845..7d7c3a8c6a 100644 --- a/src/encodingsettings.html +++ b/src/encodingsettings.html @@ -20,7 +20,9 @@ -
${LabelHardwareAccelerationTypeHelp}
+
diff --git a/src/strings/de.json b/src/strings/de.json index 6dbf6c51f5..9f1e601eb7 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1487,5 +1487,6 @@ "EnableFastImageFadeIn": "Schnelle Bildeinblendung", "LabelPlayerDimensions": "Playerabmessungen:", "LabelDroppedFrames": "Verlorene Frames:", - "LabelCorruptedFrames": "Fehlerhafte Frames:" + "LabelCorruptedFrames": "Fehlerhafte Frames:", + "OptionForceRemoteSourceTranscoding": "Transkodieren von externen Medienquellen erzwingen (z.B. LiveTV)" } diff --git a/src/strings/en-gb.json b/src/strings/en-gb.json index e35e1bfc41..489117e5b4 100644 --- a/src/strings/en-gb.json +++ b/src/strings/en-gb.json @@ -1465,5 +1465,13 @@ "OptionRandom": "Random", "SelectAdminUsername": "Please select a username for the admin account.", "ButtonSplit": "Split", - "HeaderNavigation": "Navigation" + "HeaderNavigation": "Navigation", + "OptionForceRemoteSourceTranscoding": "Force transcoding of remote media sources (like LiveTV)", + "MessageConfirmAppExit": "Do you want to exit?", + "LabelVideoResolution": "Video resolution:", + "LabelStreamType": "Stream type:", + "LabelPlayerDimensions": "Player dimensions:", + "LabelDroppedFrames": "Dropped frames:", + "LabelCorruptedFrames": "Corrupted frames:", + "CopyStreamURLError": "There was an error copying the URL." } diff --git a/src/strings/en-us.json b/src/strings/en-us.json index 6b091b0e85..9eb9162ae4 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -655,7 +655,7 @@ "LabelH264Crf": "H264 encoding CRF:", "LabelEncoderPreset": "H264 and H265 encoding preset:", "LabelHardwareAccelerationType": "Hardware acceleration:", - "LabelHardwareAccelerationTypeHelp": "This is an experimental feature only available on supported systems.", + "LabelHardwareAccelerationTypeHelp": "Hardware acceleration requires additional configuration.", "LabelHomeNetworkQuality": "Home network quality:", "LabelHomeScreenSectionValue": "Home screen section {0}:", "LabelHttpsPort": "Local HTTPS port number:", diff --git a/src/strings/es_DO.json b/src/strings/es_DO.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/src/strings/es_DO.json @@ -0,0 +1 @@ +{} diff --git a/src/strings/fr.json b/src/strings/fr.json index a489d053f6..97e2692387 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -916,7 +916,7 @@ "MetadataSettingChangeHelp": "Les modifications des paramètres des métadonnées auront une incidence sur le nouveau contenu ajouté. Pour actualiser le contenu existant, ouvrez l'écran des détails et cliquez sur le bouton Actualiser, ou effectuez des actualisations en masse en utilisant le gestionnaire de métadonnées.", "MinutesAfter": "minutes après", "MinutesBefore": "minutes avant", - "Mobile": "Mobile", + "Mobile": "Pour appareil Mobile", "Monday": "Lundi", "MoreFromValue": "Plus de {0}", "MoreUsersCanBeAddedLater": "D'autres utilisateurs pourront être ajoutés ultérieurement à partir du tableau de bord.", @@ -1455,5 +1455,15 @@ "OptionRandom": "Aléatoire", "ButtonSplit": "Séparer", "SelectAdminUsername": "Veuillez choisir un nom d'utilisateur pour le compte administrateur.", - "HeaderNavigation": "Navigation" + "HeaderNavigation": "Navigation", + "OptionForceRemoteSourceTranscoding": "Transcodafe forcé pour source de media à distance (comme Télé)", + "MessageConfirmAppExit": "Sortir?", + "LabelVideoResolution": "Résolution vidéo", + "LabelStreamType": "Type de flux", + "EnableFastImageFadeInHelp": "Activer un transition plus rapide pour images téléchargées", + "EnableFastImageFadeIn": "Transition d'image rapide", + "LabelPlayerDimensions": "Dimension du lecteur", + "LabelDroppedFrames": "Cadre informatique oublié", + "LabelCorruptedFrames": "Cadre informatique corrompu", + "CopyStreamURLError": "Il y a eu une erreur lors de la copie du URL." } diff --git a/src/strings/nb.json b/src/strings/nb.json index 0635b5ee25..a952175d80 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -434,7 +434,7 @@ "LabelCustomCssHelp": "Bruk tilpasset CSS-kode for å endre stil på web-grensesnittet.", "LabelCustomDeviceDisplayName": "Visningsnavn:", "LabelCustomDeviceDisplayNameHelp": "Oppgi et egendefinert visningsnavn eller la det være tomt for å bruke navnet som enheten rapporterer.", - "LabelCustomRating": "Egen anmeldelse:", + "LabelCustomRating": "Egen aldersgrense:", "LabelDateAdded": "Dato lagt til:", "LabelDateAddedBehavior": "Hvordan bestemme \"Dato lagt til\" for nytt innhold:", "LabelDateAddedBehaviorHelp": "Hvis en metadataverdi finnes, vil den alltid bli brukt fremfor noen av disse valgene.", @@ -1463,5 +1463,6 @@ "LabelPlayerDimensions": "Dimensjoner på avspiller:", "LabelCorruptedFrames": "Korrupte bilder:", "LabelStreamType": "Type strøm:", - "LabelDroppedFrames": "Fortapte bilder:" + "LabelDroppedFrames": "Fortapte bilder:", + "OptionForceRemoteSourceTranscoding": "Tvunget omkoding av eksterne media-kilder (som Direkte-TV)" } diff --git a/src/strings/ro.json b/src/strings/ro.json index 96f10feef5..b8e87e0d36 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1462,5 +1462,6 @@ "LabelStreamType": "Tipul streamului:", "LabelPlayerDimensions": "Dimensiunile soft redare:", "LabelDroppedFrames": "Cadre abandonate:", - "LabelCorruptedFrames": "Cadre corupte:" + "LabelCorruptedFrames": "Cadre corupte:", + "OptionForceRemoteSourceTranscoding": "Forțați transcodarea surselor media distante (cum ar fi LiveTV)" } diff --git a/src/strings/sk.json b/src/strings/sk.json index 1967ed310c..0390eb9073 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1464,5 +1464,6 @@ "LabelPlayerDimensions": "Rozmery prehrávača:", "LabelDroppedFrames": "Vynechané snímky:", "LabelCorruptedFrames": "Poškodené snímky:", - "CopyStreamURLError": "Pri kopírovaní URL nastala chyba." + "CopyStreamURLError": "Pri kopírovaní URL nastala chyba.", + "OptionForceRemoteSourceTranscoding": "Vynútiť transkódovanie vzdialených mediálnych zdrojov (ako napr. živá TV)" }