From cec6988a07d30843f4b1c038fb6ff62f15d1a5e1 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Tue, 28 Jun 2022 14:16:05 -0700 Subject: [PATCH 1/4] rustdoc: fix help menu popover toggling --- src/librustdoc/html/static/js/main.js | 3 +++ src/test/rustdoc-gui/pocket-menu.goml | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/src/librustdoc/html/static/js/main.js b/src/librustdoc/html/static/js/main.js index 70dbfd4442540..2d2de7db0c97c 100644 --- a/src/librustdoc/html/static/js/main.js +++ b/src/librustdoc/html/static/js/main.js @@ -926,6 +926,7 @@ function loadCss(cssFileName) { function showHelp() { const menu = getHelpMenu(true); if (menu.style.display === "none") { + window.hidePopoverMenus(); menu.style.display = ""; } } @@ -939,6 +940,8 @@ function loadCss(cssFileName) { const shouldShowHelp = menu.style.display === "none"; if (shouldShowHelp) { showHelp(); + } else { + window.hidePopoverMenus(); } }); diff --git a/src/test/rustdoc-gui/pocket-menu.goml b/src/test/rustdoc-gui/pocket-menu.goml index ba2986e969a35..54f3790a76521 100644 --- a/src/test/rustdoc-gui/pocket-menu.goml +++ b/src/test/rustdoc-gui/pocket-menu.goml @@ -24,6 +24,11 @@ click: "#help-button" assert-css: ("#help-button .popover", {"display": "block"}) assert-css: ("#settings-menu .popover", {"display": "none"}) +// Now verify that clicking the help menu again closes it. +click: "#help-button" +assert-css: ("#help-button .popover", {"display": "none"}) +assert-css: ("#settings-menu .popover", {"display": "none"}) + // We check the borders color now: // Ayu theme From cb8a7388fa0106793c3ea709528fa1408c7cf87b Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Tue, 28 Jun 2022 14:56:24 -0700 Subject: [PATCH 2/4] rustdoc: fix keyboard shortcuts bug in settings menu This commit fixes the keyboard shorts code to call localStorage every time a key is pressed. This matters because you're supposed to be able to change a setting and have it immediately take effect. --- src/librustdoc/html/static/js/main.js | 2 +- src/test/rustdoc-gui/settings.goml | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/librustdoc/html/static/js/main.js b/src/librustdoc/html/static/js/main.js index 2d2de7db0c97c..789e7d298fa98 100644 --- a/src/librustdoc/html/static/js/main.js +++ b/src/librustdoc/html/static/js/main.js @@ -412,9 +412,9 @@ function loadCss(cssFileName) { window.hidePopoverMenus(); } - const disableShortcuts = getSettingValue("disable-shortcuts") === "true"; function handleShortcut(ev) { // Don't interfere with browser shortcuts + const disableShortcuts = getSettingValue("disable-shortcuts") === "true"; if (ev.ctrlKey || ev.altKey || ev.metaKey || disableShortcuts) { return; } diff --git a/src/test/rustdoc-gui/settings.goml b/src/test/rustdoc-gui/settings.goml index 237a4751a8d66..a43c712ef9a02 100644 --- a/src/test/rustdoc-gui/settings.goml +++ b/src/test/rustdoc-gui/settings.goml @@ -121,6 +121,17 @@ local-storage: {"rustdoc-disable-shortcuts": "false"} click: ".setting-line:last-child .toggle .label" assert-local-storage: {"rustdoc-disable-shortcuts": "true"} +// Make sure that "Disable keyboard shortcuts" actually took effect. +press-key: "?" +wait-for-css: ("#settings-menu .popover", {"display": "block"}) + +// Now turn keyboard shortcuts back on, and see if they work. +click: ".setting-line:last-child .toggle .label" +assert-local-storage: {"rustdoc-disable-shortcuts": "false"} +press-key: "?" +wait-for-css: ("#help-button .popover", {"display": "block"}) +assert-css: ("#settings-menu .popover", {"display": "none"}) + // Now we go to the settings page to check that the CSS is loaded as expected. goto: file://|DOC_PATH|/settings.html wait-for: "#settings" From f5f42a8cba22fe1616b33cbedf2adc9bf01056b0 Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Tue, 28 Jun 2022 15:06:48 -0700 Subject: [PATCH 3/4] rustdoc: make keyboard commands work when checkboxes are selected --- src/librustdoc/html/static/js/main.js | 3 ++- src/test/rustdoc-gui/settings.goml | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/librustdoc/html/static/js/main.js b/src/librustdoc/html/static/js/main.js index 789e7d298fa98..c33e272774438 100644 --- a/src/librustdoc/html/static/js/main.js +++ b/src/librustdoc/html/static/js/main.js @@ -419,7 +419,8 @@ function loadCss(cssFileName) { return; } - if (document.activeElement.tagName === "INPUT") { + if (document.activeElement.tagName === "INPUT" && + document.activeElement.type !== "checkbox") { switch (getVirtualKey(ev)) { case "Escape": handleEscape(ev); diff --git a/src/test/rustdoc-gui/settings.goml b/src/test/rustdoc-gui/settings.goml index a43c712ef9a02..49478775b0582 100644 --- a/src/test/rustdoc-gui/settings.goml +++ b/src/test/rustdoc-gui/settings.goml @@ -122,6 +122,7 @@ click: ".setting-line:last-child .toggle .label" assert-local-storage: {"rustdoc-disable-shortcuts": "true"} // Make sure that "Disable keyboard shortcuts" actually took effect. +// The help popover won't exist yet. press-key: "?" wait-for-css: ("#settings-menu .popover", {"display": "block"}) From ccea908c17c835a8466334baacbcb4052347802e Mon Sep 17 00:00:00 2001 From: Michael Howell Date: Tue, 28 Jun 2022 17:30:58 -0700 Subject: [PATCH 4/4] rustdoc: add assertion for missing popover div --- src/test/rustdoc-gui/settings.goml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/rustdoc-gui/settings.goml b/src/test/rustdoc-gui/settings.goml index 49478775b0582..c402c7991c8bb 100644 --- a/src/test/rustdoc-gui/settings.goml +++ b/src/test/rustdoc-gui/settings.goml @@ -122,13 +122,15 @@ click: ".setting-line:last-child .toggle .label" assert-local-storage: {"rustdoc-disable-shortcuts": "true"} // Make sure that "Disable keyboard shortcuts" actually took effect. -// The help popover won't exist yet. +press-key: "Escape" press-key: "?" +assert-false: "#help-button .popover" wait-for-css: ("#settings-menu .popover", {"display": "block"}) // Now turn keyboard shortcuts back on, and see if they work. click: ".setting-line:last-child .toggle .label" assert-local-storage: {"rustdoc-disable-shortcuts": "false"} +press-key: "Escape" press-key: "?" wait-for-css: ("#help-button .popover", {"display": "block"}) assert-css: ("#settings-menu .popover", {"display": "none"})