mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-11-09 18:54:57 +00:00
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:
@@ -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)}),
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user