aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2022-10-25 00:23:21 -0700
committerKaz Kylheku <kaz@kylheku.com>2022-10-25 00:23:21 -0700
commit17836aa2b518da5702a3a114cac9d94ee0fd44b8 (patch)
treefdc3b70dfe672c2fc63268c52e404d1d21c3fdab
parent5d93cd0a16dcfb54690141e836d7d9dfd8b19d27 (diff)
downloadjp-hash-17836aa2b518da5702a3a114cac9d94ee0fd44b8.tar.gz
jp-hash-17836aa2b518da5702a3a114cac9d94ee0fd44b8.tar.bz2
jp-hash-17836aa2b518da5702a3a114cac9d94ee0fd44b8.zip
firefox: make undo work.
* firefox/jp-hash.js (jp_hash_edit): Use execCommand to issue insertText actions to edit the object, rather than doing it directly, so that undo integrity is preserved.
-rw-r--r--firefox/jp-hash.js14
1 files changed, 8 insertions, 6 deletions
diff --git a/firefox/jp-hash.js b/firefox/jp-hash.js
index 4e76e99..f23ba46 100644
--- a/firefox/jp-hash.js
+++ b/firefox/jp-hash.js
@@ -105,17 +105,19 @@ async function jp_hash_edit(elem)
if (start != end) {
let len = elem.value.length;
- let head = elem.value.substring(0, start);
let sel = elem.value.substring(start, end);
- let tail = elem.value.substring(end, len);
jphash(sel, (jph) => {
- elem.value = head + jph + tail;
- elem.selectionStart = start;
- elem.selectionEnd = start + jph.length;
+ elem.focus();
+ document.execCommand("insertText", false, jph);
+ elem.setSelectionRange(start, start + jph.length);
});
} else {
- jphash(elem.value, (jph) => { elem.value = jph; });
+ jphash(elem.value, (jph) => {
+ elem.focus();
+ elem.select();
+ document.execCommand("insertText", false, jph);
+ });
}
}
}