From 636ff33d604ffd295c08c3b6e5fcc634262f3507 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Tue, 5 Dec 2023 19:55:43 -0500 Subject: [PATCH] LibWebView: Add an escape key handler for DOM-editing fields Little quality of life improvement I keep reaching for. --- Base/res/ladybird/inspector.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Base/res/ladybird/inspector.js b/Base/res/ladybird/inspector.js index 10dcc7a915..c7a2a58b43 100644 --- a/Base/res/ladybird/inspector.js +++ b/Base/res/ladybird/inspector.js @@ -208,6 +208,7 @@ const createDOMEditor = (onHandleChange, onCancelChange) => { const handleChange = () => { input.removeEventListener("change", handleChange); input.removeEventListener("blur", cancelChange); + input.removeEventListener("keydown", handleInput); try { onHandleChange(input.value); @@ -219,13 +220,24 @@ const createDOMEditor = (onHandleChange, onCancelChange) => { const cancelChange = () => { input.removeEventListener("change", handleChange); input.removeEventListener("blur", cancelChange); + input.removeEventListener("keydown", handleInput); selectedDOMNode.classList.add("selected"); onCancelChange(input); }; + const handleInput = event => { + const ESCAPE_KEYCODE = 27; + + if (event.keyCode === ESCAPE_KEYCODE) { + cancelChange(); + event.preventDefault(); + } + }; + input.addEventListener("change", handleChange); input.addEventListener("blur", cancelChange); + input.addEventListener("keydown", handleInput); setTimeout(() => { input.focus();