diff --git a/resources/report/html/loot-plugin-editor.html b/resources/report/html/loot-plugin-editor.html index 2bbbb036..5e00d2e0 100644 --- a/resources/report/html/loot-plugin-editor.html +++ b/resources/report/html/loot-plugin-editor.html @@ -384,8 +384,6 @@ loot-editor-close bubbles: true, detail: (evt.target.id == 'accept'), })); - - evt.target.parentElement.parentElement.parentNode.host.data.isEditorOpen = false; } }, diff --git a/resources/report/js/events.js b/resources/report/js/events.js index 66017fc3..aa89df65 100644 --- a/resources/report/js/events.js +++ b/resources/report/js/events.js @@ -461,6 +461,7 @@ function onEditorOpen(evt) { } function onEditorClose(evt) { /* evt.detail is true if the apply button was pressed. */ + var promise; if (evt.detail) { /* Need to record the editor control values and work out what's changed, and update any UI elements necessary. Offload the @@ -474,7 +475,7 @@ function onEditorClose(evt) { edits ] }); - loot.query(request).then(JSON.parse).then(function(result){ + promise = loot.query(request).then(JSON.parse).then(function(result){ if (result) { evt.target.data.modPriority = result.modPriority; evt.target.data.isGlobalPriority = result.isGlobalPriority; @@ -483,51 +484,53 @@ function onEditorClose(evt) { evt.target.data.isDirty = result.isDirty; evt.target.data.userlist = edits.userlist; - delete evt.target.data.editor; /* Now perform search again. If there is no current search, this won't do anything. */ document.getElementById('searchBar').search(); } - }).catch(processCefError); + }); } else { /* Don't need to record changes, but still need to notify C++ side that the editor has been closed. */ - loot.query('editorClosed').catch(processCefError); + promise = loot.query('editorClosed'); + } + promise.then(function(){ delete evt.target.data.editor; - } - /* Now hide editor. */ - evt.target.classList.toggle('flip'); + /* Now hide editor. */ + evt.target.classList.toggle('flip'); + evt.target.data.isEditorOpen = false; - /* Remove drag 'n' drop event handlers. */ - var elements = document.getElementById('cardsNav').getElementsByTagName('loot-plugin-item'); - for (var i = 0; i < elements.length; ++i) { - elements[i].removeAttribute('draggable'); - elements[i].removeEventListener('dragstart', elements[i].onDragStart, false); - } + /* Remove drag 'n' drop event handlers. */ + var elements = document.getElementById('cardsNav').getElementsByTagName('loot-plugin-item'); + for (var i = 0; i < elements.length; ++i) { + elements[i].removeAttribute('draggable'); + elements[i].removeEventListener('dragstart', elements[i].onDragStart, false); + } - /* Disable priority hover in plugins list and enable header - buttons if this is the only editor instance. */ - var numEditors = parseInt(document.body.getAttribute('data-editors'), 10); - --numEditors; + /* Disable priority hover in plugins list and enable header + buttons if this is the only editor instance. */ + var numEditors = parseInt(document.body.getAttribute('data-editors'), 10); + --numEditors; - if (numEditors == 0) { - document.body.removeAttribute('data-editors'); - /* Set the edit mode toggle attribute. */ - document.getElementById('cardsNav').setAttribute('data-editModeToggle', ''); - /* Re-enable toolbar elements. */ - document.getElementById('wipeUserlistButton').removeAttribute('disabled'); - document.getElementById('copyContentButton').removeAttribute('disabled'); - document.getElementById('refreshContentButton').removeAttribute('disabled'); - document.getElementById('settingsButton').removeAttribute('disabled'); - document.getElementById('gameMenu').removeAttribute('disabled'); - document.getElementById('updateMasterlistButton').removeAttribute('disabled'); - document.getElementById('sortButton').removeAttribute('disabled'); - } else { - document.body.setAttribute('data-editors', numEditors); - } - document.getElementById('cardsNav').updateSize(); + if (numEditors == 0) { + document.body.removeAttribute('data-editors'); + /* Set the edit mode toggle attribute. */ + document.getElementById('cardsNav').setAttribute('data-editModeToggle', ''); + /* Re-enable toolbar elements. */ + document.getElementById('wipeUserlistButton').removeAttribute('disabled'); + document.getElementById('copyContentButton').removeAttribute('disabled'); + document.getElementById('refreshContentButton').removeAttribute('disabled'); + document.getElementById('settingsButton').removeAttribute('disabled'); + document.getElementById('gameMenu').removeAttribute('disabled'); + document.getElementById('updateMasterlistButton').removeAttribute('disabled'); + document.getElementById('sortButton').removeAttribute('disabled'); + } else { + document.body.setAttribute('data-editors', numEditors); + } + document.getElementById('cardsNav').updateSize(); + }).catch(processCefError); } function onConflictsFilter(evt) { /* Deactivate any existing plugin conflict filter. */