diff --git a/crates/mdbook-html/front-end/js/book.js b/crates/mdbook-html/front-end/js/book.js index ed1dfca4..fe74b710 100644 --- a/crates/mdbook-html/front-end/js/book.js +++ b/crates/mdbook-html/front-end/js/book.js @@ -24,7 +24,10 @@ function playground_text(playground, hidden = true) { * @returns {boolean} True if the keypress handler should be skipped. */ function mdbook_something_else_has_focus(e) { - return /^(?:input|select|textarea)$/i.test(e.target.nodeName); + // Check composedPath in case the event happened from something generated + // from the shadowDOM. + const target = e.composedPath()[0] || e.target; + return /^(?:input|select|textarea)$/i.test(target.nodeName); } (function codeSnippets() { diff --git a/tests/gui/shadow-dom.goml b/tests/gui/shadow-dom.goml index b1f11210..2b401f20 100644 --- a/tests/gui/shadow-dom.goml +++ b/tests/gui/shadow-dom.goml @@ -8,11 +8,13 @@ press-key: 'x' wait-for: '#shadow-input-host' // See what happens when the s key is pressed. press-key: 's' -wait-for-css-false: ("#mdbook-search-wrapper", {"display": "none"}) +wait-for: 200 +wait-for-css: ("#mdbook-search-wrapper", {"display": "none"}) // Also try the global key handlers. reload: press-key: 'x' wait-for: '#shadow-input-host' press-key: '?' -wait-for-css: ("#mdbook-help-container", {"display": "flex"}) +wait-for: 200 +wait-for-css: ("#mdbook-help-container", {"display": "none"})