Changing the output encoding no longer triggers a full bake

This commit is contained in:
n1474335 2022-09-09 16:35:21 +01:00
parent 406da9fa2c
commit 3893c22275
2 changed files with 14 additions and 5 deletions

View File

@ -81,6 +81,9 @@ class StatusBarPanel {
* @param {Event} e
*/
eolSelectClick(e) {
// preventDefault is required to stop the URL being modified and popState being triggered
e.preventDefault();
const eolLookup = {
"LF": "\u000a",
"VT": "\u000b",
@ -106,6 +109,9 @@ class StatusBarPanel {
* @param {Event} e
*/
chrEncSelectClick(e) {
// preventDefault is required to stop the URL being modified and popState being triggered
e.preventDefault(); // TODO - this breaks the menus when you click the button itself
const chrEncVal = parseInt(e.target.getAttribute("data-val"), 10);
if (isNaN(chrEncVal)) return;
@ -366,9 +372,9 @@ function hideOnClickOutside(element, instantiatingEvent) {
}
};
if (!Object.keys(elementsWithListeners).includes(element)) {
document.addEventListener("click", outsideClickListener);
if (!Object.prototype.hasOwnProperty.call(elementsWithListeners, element)) {
elementsWithListeners[element] = outsideClickListener;
document.addEventListener("click", elementsWithListeners[element], false);
}
}
@ -378,7 +384,7 @@ function hideOnClickOutside(element, instantiatingEvent) {
*/
function hideElement(element) {
element.classList.remove("show");
document.removeEventListener("click", elementsWithListeners[element]);
document.removeEventListener("click", elementsWithListeners[element], false);
delete elementsWithListeners[element];
}

View File

@ -146,6 +146,8 @@ class OutputWaiter {
*/
chrEncChange(chrEncVal) {
this.outputChrEnc = chrEncVal;
// Reset the output, forcing it to re-decode the data with the new character encoding
this.setOutput(this.currentOutputCache, true);
}
/**
@ -173,10 +175,11 @@ class OutputWaiter {
/**
* Sets the value of the current output
* @param {string|ArrayBuffer} data
* @param {boolean} [force=false]
*/
setOutput(data) {
setOutput(data, force=false) {
// Don't do anything if the output hasn't changed
if (data === this.currentOutputCache) return;
if (!force && data === this.currentOutputCache) return;
this.currentOutputCache = data;
// If data is an ArrayBuffer, convert to a string in the correct character encoding