Make Browse Presets navigate to visible section (#2172)

This commit is contained in:
Altynzhan Karybai committed 2026-10-24 02:36:31 +05:00
1 parent d5bbf73046
commit 7d7382c14e
2 files changed
+24 -9

No files matched your search

+2
View File
@@ -1322,8 +1322,10 @@ pub fn frontend(app: &mut EffectcraftApp, ctx: &egui::Context, id: &str, p: Valu
Value::Null
}
"anim.browsePresets" => {
app.ui.effects_search.clear();
app.ui.effects_view.presets = true;
app.ui.effects_open.insert("presets".into());
let _ = ctx.data_mut(|data| data.remove_temp::<(f32, f32)>(egui::Id::new("fx-scroll")));
app.show_panel(PanelKind::EffectsPresets);
Value::Null
}
+22 -9
View File
@@ -47,19 +47,32 @@ fn shown(h: &Harness<'_, EffectcraftApp>, label: &str) -> bool {
}
#[test]
fn browse_presets_opens_the_animation_presets_list() {
fn browse_presets_clears_search_and_scrolls_to_the_visible_presets_list() {
use effectcraft_ui_egui::dock::PanelKind;
let mut app = EffectcraftApp::new(Session::default());
app.ui.effects_view.presets = false;
app.ui.effects_open.clear();
let mut h = harness();
let ctx = h.ctx.clone();
let result = effectcraft_ui_egui::menus::invoke(&mut app, &egui::Context::default(), "anim.browsePresets", json!({}));
let managed = effectcraft_ui_egui::menus::invoke(h.state_mut(), &ctx, "effect.manage", json!({}));
assert!(managed.is_ok(), "{managed:?}");
assert_eq!(h.state().ui.focused, PanelKind::EffectsPresets);
assert!(result.is_ok());
assert_eq!(app.ui.focused, PanelKind::EffectsPresets);
assert!(app.ui.effects_view.presets);
assert!(app.ui.effects_open.contains("presets"));
h.state_mut().ui.effects_search = "no matching animation preset".into();
let scroll_id = egui::Id::new("fx-scroll");
h.ctx.data_mut(|data| data.insert_temp(scroll_id, (480.0_f32, 960.0_f32)));
assert_eq!(h.ctx.data(|data| data.get_temp::<(f32, f32)>(scroll_id)), Some((480.0, 960.0)));
let result = effectcraft_ui_egui::menus::invoke(h.state_mut(), &ctx, "anim.browsePresets", json!({}));
assert!(result.is_ok(), "{result:?}");
assert_eq!(h.state().ui.focused, PanelKind::EffectsPresets);
assert!(h.state().ui.effects_search.is_empty());
assert!(h.state().ui.effects_view.presets);
assert!(h.state().ui.effects_open.contains("presets"));
assert!(h.ctx.data(|data| data.get_temp::<(f32, f32)>(scroll_id)).is_none());
h.run_steps(3);
assert!(h.state().auto.find("effects.category.presets").is_some(), "Animation Presets must be visible after Browse Presets");
}
/// Space (or any shortcut) while a menu is open goes to the menu, not the app: it started the