From 6ed04c6f8ea7e533710ffa6f00d6d1978a0b2a14 Mon Sep 17 00:00:00 2001 From: Oliver Hamlet Date: Fri, 6 Jan 2017 20:57:14 +0000 Subject: [PATCH] Add safety check when translating dropdown selections Only update the selected item text if an item is selected, in case translation runs before the element has finished initialising. Fixes #732. --- src/gui/html/js/translateStaticText.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/gui/html/js/translateStaticText.js b/src/gui/html/js/translateStaticText.js index 1534f323..46c9cf3d 100644 --- a/src/gui/html/js/translateStaticText.js +++ b/src/gui/html/js/translateStaticText.js @@ -217,6 +217,13 @@ document.getElementById('searchBar').shadowRoot.getElementById('search').label = l10n.translate('Search cards'); } + function updateDropdownSelectedItemText(dropdownElement) { + const paperDropdownMenu = dropdownElement.shadowRoot.querySelector('paper-dropdown-menu'); + if (paperDropdownMenu.selectedItem) { + paperDropdownMenu.shadowRoot.querySelector('paper-input').value = paperDropdownMenu.selectedItem.textContent; + } + } + function translateSidebar(l10n) { /* Nav items */ document.getElementById('sidebarTabs').firstElementChild.textContent = l10n.translate('Plugins'); @@ -239,7 +246,7 @@ conflictsFilter.label = l10n.translate('Show only conflicting plugins for'); conflictsFilter.firstElementChild.textContent = l10n.translate('No plugin selected'); /* The selected text doesn't update, so force that translation. */ - conflictsFilter.shadowRoot.querySelector('paper-dropdown-menu').shadowRoot.querySelector('paper-input').value = conflictsFilter.shadowRoot.querySelector('paper-dropdown-menu').selectedItem.textContent; + updateDropdownSelectedItemText(conflictsFilter); document.getElementById('hiddenPluginsTxt').textContent = l10n.translate('Hidden plugins:'); document.getElementById('hiddenMessagesTxt').textContent = l10n.translate('Hidden messages:'); @@ -266,7 +273,7 @@ defaultGameSelect.previousElementSibling.textContent = l10n.translate('Default Game'); defaultGameSelect.firstElementChild.textContent = l10n.translate('Autodetect'); /* The selected text doesn't update, so force that translation. */ - defaultGameSelect.shadowRoot.querySelector('paper-dropdown-menu').shadowRoot.querySelector('paper-input').value = defaultGameSelect.shadowRoot.querySelector('paper-dropdown-menu').selectedItem.textContent; + updateDropdownSelectedItemText(defaultGameSelect); document.getElementById('languageLabel').textContent = l10n.translate('Language'); document.getElementById('languageLabel').nextElementSibling.textContent = l10n.translate('Language changes will be applied after LOOT is restarted.');