Panels: showing a hidden floating group returns its window's panels

`window.panel` on a panel whose group was hidden returned the whole
layout and every floating panel in every window. It now returns
`{floating}` with the panels of the restored panel's window, as it
does when it shows a panel that already floats.
This commit is contained in:
dotCooCoo
2026-11-04 16:55:26 +07:00
committed by bflatastic
parent e3a55b97fd
commit af604625b3
2 changed files with 18 additions and 4 deletions
+5 -4
View File
@@ -339,10 +339,11 @@ fn show_panel(app: &mut VectorcraftApp, params: &Value) -> Result<Value, String>
if !layout.contains(&panel.to_string()) && !app.ui.docking_hidden.contains_key(panel) && crate::panels::library_panel::parse(panel).is_some() {
return crate::panels::library_panel::float(app, panel);
}
if app.ui.docking_hidden.contains_key(panel) {
return restore_hidden_group(app, panel);
}
let value = shared_command(app, "window.panel.activate", &json!({"panel": panel}))?;
let value = if app.ui.docking_hidden.contains_key(panel) {
restore_hidden_group(app, panel)?
} else {
shared_command(app, "window.panel.activate", &json!({"panel": panel}))?
};
let layout = layout_of(&app.ui);
Ok(match floating_window(&layout, panel) {
Some(window) => json!({"floating": window_panels(window)}),
+13
View File
@@ -612,6 +612,19 @@ fn f7_hides_and_restores_a_floating_tab_group() {
assert!(showing(&h.app.ui, "layers"));
}
#[test]
fn showing_a_hidden_floating_group_returns_its_window_panels() {
let mut h = Harness::new();
h.app.run("window.panel.float", json!({"panel": "swatches"})).unwrap();
h.app.run("window.panel.float", json!({"panel": "layers", "group": true})).unwrap();
h.app.run("window.panel.activate", json!({"panel": "layers"})).unwrap();
h.frame(vec![]);
h.press(egui::Key::F7, egui::Modifiers::NONE);
assert!(floating_window(&h.layout(), "layers").is_none());
let reply = h.app.run("window.panel", json!({"panel": "layers"})).unwrap();
assert_eq!(reply, json!({"floating": ["properties", "layers", "libraries"]}), "only the restored window's panels");
}
#[test]
fn f7_toggles_a_multi_tab_icon_flyout() {
let mut h = Harness::new();