Simplify game menu event handling

Handle selection changes rather than menu item clicks, which cleans up
dom.js and means fewer event handlers need to be registered.
This commit is contained in:
Oliver Hamlet
2016-01-06 18:27:05 +00:00
parent 392b68eea4
commit 1ddcd05e36
3 changed files with 3 additions and 5 deletions
-3
View File
@@ -44,10 +44,8 @@
for (let i = 0; i < gameMenuItems.length; ++i) {
if (installedGames.indexOf(gameMenuItems[i].getAttribute('value')) === -1) {
gameMenuItems[i].setAttribute('disabled', true);
gameMenuItems[i].removeEventListener('click', onChangeGame);
} else {
gameMenuItems[i].removeAttribute('disabled');
gameMenuItems[i].addEventListener('click', onChangeGame);
}
}
},
@@ -62,7 +60,6 @@
gameSelect.removeChild(gameSelect.lastElementChild);
}
while (gameMenu.firstElementChild) {
gameMenu.firstElementChild.removeEventListener('click', onChangeGame);
gameMenu.removeChild(gameMenu.firstElementChild);
}
gameTable.clear();
+2 -2
View File
@@ -107,13 +107,13 @@ function onOpenLogLocation(evt) {
}
function onChangeGame(evt) {
/* Check that the selected game isn't the current one. */
if (evt.target.className.indexOf('core-selected') !== -1) {
if (!evt.detail.isSelected) {
return;
}
/* Send off a CEF query with the folder name of the new game. */
loot.Dialog.showProgress(loot.l10n.translate('Loading game data...'));
loot.query('changeGame', evt.currentTarget.getAttribute('value')).then((result) => {
loot.query('changeGame', evt.detail.item.getAttribute('value')).then((result) => {
/* Filters should be re-applied on game change, except the conflicts
filter. Don't need to deactivate the others beforehand. Strictly not
deactivating the conflicts filter either, just resetting it's value.
+1
View File
@@ -68,6 +68,7 @@
document.getElementById('helpButton').addEventListener('click', onOpenReadme);
document.getElementById('aboutButton').addEventListener('click', onShowAboutDialog);
document.getElementById('quitButton').addEventListener('click', onQuit);
document.getElementById('gameMenu').addEventListener('core-select', onChangeGame);
document.getElementById('updateMasterlistButton').addEventListener('click', onUpdateMasterlist);
document.getElementById('sortButton').addEventListener('click', onSortPlugins);
document.getElementById('applySortButton').addEventListener('click', onApplySort);