diff --git a/crates/ui-egui/src/panel_docking.rs b/crates/ui-egui/src/panel_docking.rs index 9d8c71538..0deb2c3c0 100644 --- a/crates/ui-egui/src/panel_docking.rs +++ b/crates/ui-egui/src/panel_docking.rs @@ -339,10 +339,11 @@ fn show_panel(app: &mut VectorcraftApp, params: &Value) -> Result 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)}), diff --git a/crates/ui-egui/src/panel_docking/tests.rs b/crates/ui-egui/src/panel_docking/tests.rs index 2bae524dd..f8287944b 100644 --- a/crates/ui-egui/src/panel_docking/tests.rs +++ b/crates/ui-egui/src/panel_docking/tests.rs @@ -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();