mirror of
https://github.com/storytold/figcraft.git
synced 2026-10-26 19:36:46 -06:00
Merge fix/718
This commit is contained in:
@@ -162,6 +162,8 @@ mod proto_reorder_tests;
|
||||
#[cfg(test)]
|
||||
mod proto_responsive_tests;
|
||||
#[cfg(test)]
|
||||
mod resources_tests;
|
||||
#[cfg(test)]
|
||||
mod select_all_tests;
|
||||
#[cfg(test)]
|
||||
mod shortcut_keys_tests;
|
||||
@@ -810,7 +812,11 @@ impl FigApp {
|
||||
}
|
||||
"focus.region" => self.ui.nav.step(r.data.get("step").and_then(Value::as_i64).unwrap_or(1).clamp(-4, 4) as i32),
|
||||
"panel.layers" => self.ui.left_tab = LeftTab::File,
|
||||
"panel.assets" => self.ui.left_tab = LeftTab::Assets,
|
||||
"panel.assets" => {
|
||||
self.ui.left_tab = LeftTab::Assets;
|
||||
self.ui.left_collapsed = false;
|
||||
self.ui.versions = Default::default();
|
||||
}
|
||||
"panel.versionHistory" => versions::open(self),
|
||||
"view.devCompare" => {
|
||||
self.ui.dev.compare = r.data.get("id").and_then(figcraft_engine::params::id_of).map(dev_compare::CompareView::new);
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
//! The toolbar's Resources button and Shift+I open the Assets panel (#710), from a collapsed
|
||||
//! sidebar and from the version history too.
|
||||
|
||||
use egui::accesskit::Role;
|
||||
use egui::{Event, Key, Modifiers, Pos2, pos2};
|
||||
use figcraft_engine::Session;
|
||||
|
||||
use crate::LeftTab;
|
||||
use crate::layers_drag_tests::Ui;
|
||||
|
||||
fn click(u: &mut Ui, p: Pos2) {
|
||||
u.button(p, true);
|
||||
u.button(p, false);
|
||||
u.frame(vec![]);
|
||||
}
|
||||
|
||||
fn shift_i(u: &mut Ui) {
|
||||
let modifiers = Modifiers::SHIFT;
|
||||
u.frame(vec![
|
||||
Event::Key { key: Key::I, physical_key: None, pressed: true, repeat: false, modifiers },
|
||||
Event::Key { key: Key::I, physical_key: None, pressed: false, repeat: false, modifiers },
|
||||
]);
|
||||
u.frame(vec![]);
|
||||
}
|
||||
|
||||
/// The middle of the toolbar's Resources button, found in the AccessKit tree.
|
||||
fn resources_button(u: &mut Ui) -> Pos2 {
|
||||
u.ctx.enable_accesskit();
|
||||
u.frame(vec![]);
|
||||
let out = u.frame_output(vec![]);
|
||||
let nodes = out.platform_output.accesskit_update.expect("an AccessKit update").nodes;
|
||||
let n = nodes.iter().map(|(_, n)| n).find(|n| n.role() == Role::Button && n.label() == Some("Resources")).expect("Resources");
|
||||
let b = n.bounds().expect("bounds");
|
||||
pos2(((b.x0 + b.x1) / 2.0) as f32, ((b.y0 + b.y1) / 2.0) as f32)
|
||||
}
|
||||
|
||||
fn assets_shown(u: &Ui) -> bool {
|
||||
u.app.ui.left_tab == LeftTab::Assets && !u.app.ui.left_collapsed && !u.app.ui.versions.open
|
||||
}
|
||||
|
||||
/// The three states the sidebar can be in when Resources is asked for.
|
||||
fn starts() -> Vec<(&'static str, Ui)> {
|
||||
let shown = Ui::new(Session::new());
|
||||
let mut collapsed = Ui::new(Session::new());
|
||||
collapsed.app.ui.left_collapsed = true;
|
||||
let mut versions = Ui::new(Session::new());
|
||||
crate::versions::open(&mut versions.app);
|
||||
vec![("layers", shown), ("collapsed", collapsed), ("version history", versions)]
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn the_resources_button_opens_the_assets_panel() {
|
||||
for (name, mut u) in starts() {
|
||||
let at = resources_button(&mut u);
|
||||
click(&mut u, at);
|
||||
assert!(assets_shown(&u), "{name}: the Assets panel is open");
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn shift_i_opens_the_assets_panel() {
|
||||
for (name, mut u) in starts() {
|
||||
u.frame(vec![]);
|
||||
shift_i(&mut u);
|
||||
assert!(assets_shown(&u), "{name}: the Assets panel is open");
|
||||
}
|
||||
}
|
||||
@@ -137,8 +137,7 @@ pub fn show(app: &mut FigApp, ui: &mut Ui) {
|
||||
if id == "actions" {
|
||||
app.ui.palette = Some(String::new());
|
||||
} else {
|
||||
app.ui.left_tab = crate::LeftTab::Assets;
|
||||
app.ui.left_collapsed = false;
|
||||
app.run("view.assets", json!({}));
|
||||
}
|
||||
}
|
||||
x += cell + 4.0;
|
||||
|
||||
Reference in New Issue
Block a user