Tests: a torn-off strip or a new toolbar leaves the palette windows shown

The hidden-toolbar test now expects exactly one show command when the
flyout stops drawing, and the comment at palette_window_levels names
the All Tools drawer.
This commit is contained in:
dotCooCoo
2026-11-09 00:34:34 +07:00
committed by bflatastic
parent f8977285cc
commit 5f0d3addf7
2 changed files with 21 additions and 2 deletions
+2 -1
View File
@@ -1136,7 +1136,8 @@ pub(crate) fn show(app: &mut VectorcraftApp, ui: &mut egui::Ui) {
}
let modal = modal_open(app, &ctx);
// Palette windows are OS windows of their own, held above the app's window while it is active,
// so a dialog, a menu or a tool flyout drawn in the main window would be covered by them.
// so a dialog, a menu, a tool flyout or the All Tools drawer drawn in the main window would be
// covered by them.
#[cfg(not(target_arch = "wasm32"))]
palette_window_levels(&ctx, &layout, modal, egui::Popup::is_any_open(&ctx) || crate::menus::menu_open(&ctx) || crate::toolbar::flyout_open(&ctx));
let mut blocked = Vec::new();
@@ -750,7 +750,25 @@ fn a_flyout_or_drawer_of_a_hidden_toolbar_leaves_the_palette_windows_shown() {
h.app.run("window.panels", json!({})).unwrap();
h.frames(1);
assert!(!h.app.ui.toolbar && h.app.ui.flyout.is_some(), "the flyout is left set with the Tools panel hidden");
assert_eq!(take_palette_commands(&h, viewport).0.last(), Some(&true), "shown again: the flyout does not draw");
assert_eq!(take_palette_commands(&h, viewport).0, [true], "shown again: the flyout does not draw");
}
/// A strip torn off a flyout and a toolbar made with New Toolbar stay on screen like panels, so the
/// palette windows stay shown beside them.
#[test]
fn a_torn_off_strip_or_a_new_toolbar_leaves_the_palette_windows_shown() {
let mut h = Harness::new();
let viewport = h.float("navigator");
h.host.borrow_mut().focus = ViewportId::ROOT;
h.frames(2);
take_palette_commands(&h, viewport);
h.app.run("window.floatTools", json!({"tool": "pen"})).unwrap();
h.app.run("window.toolbar.new", json!({"name": "Mine"})).unwrap();
h.frames(2);
assert!(!h.app.ui.floating_flyouts.is_empty(), "the strip floats");
assert!(h.app.ui.custom_toolbars.iter().any(|b| b.shown), "the new toolbar shows");
assert_eq!(h.app.ui.flyout, None, "no flyout is open");
assert_eq!(take_palette_commands(&h, viewport), (vec![], vec![]), "the palette windows are left as they were");
}
/// The frame in which a click elsewhere closes a flyout or the drawer shows the palette windows, as