diff --git a/crates/ui-egui/src/panel_docking.rs b/crates/ui-egui/src/panel_docking.rs index 7e1255dba..2b12d673d 100644 --- a/crates/ui-egui/src/panel_docking.rs +++ b/crates/ui-egui/src/panel_docking.rs @@ -446,7 +446,15 @@ pub(crate) fn command(app: &mut DesignApp, id: &str, params: &Value) -> Option(ctx, area_id()); + } + return Some(Ok(json!({"layout": layout_of(app), "closed": [], "floating": floating_panels(app)}))); + } return Some(shared_command(app, "window.panel.activate", params)); } let id = shared_id(id)?; diff --git a/crates/ui-egui/src/panel_docking_tests.rs b/crates/ui-egui/src/panel_docking_tests.rs index 66416ba6d..e6070d6dd 100644 --- a/crates/ui-egui/src/panel_docking_tests.rs +++ b/crates/ui-egui/src/panel_docking_tests.rs @@ -602,6 +602,12 @@ fn collapse_to_icons_shrinks_the_dock_to_its_icons() { assert_eq!(app.ui.docking_raise.as_deref(), Some("pages")); assert!(showing(&app, "pages")); assert!(in_iconic_column(app.ui.docking.as_ref().unwrap(), "pages")); + // Choosing it again closes the flyout, and a third time opens it again. + app.run("window.panel", json!({"panel":"pages"})).unwrap(); + assert_eq!(app.ui.docking_flyout, None); + assert!(!showing(&app, "pages")); + app.run("window.panel", json!({"panel":"pages"})).unwrap(); + assert_eq!(app.ui.docking_flyout.as_deref(), Some("pages")); } #[test]