Remove misleading canvas activation controls

This commit is contained in:
2026-09-12 07:07:15 -07:00
parent 956a584132
commit b25065c442
6 changed files with 40 additions and 83 deletions
@@ -106,35 +106,7 @@ pub fn view<'a>(app: &'a App, owner: Id, out: Column<'a, Message>) -> Element<'a
.height(Fill)
.style(style::card)
.into();
let mut navigation = row![
out.width(Fill),
super::super::canvas_workspace::Control::new(
button(
text(if presentation.focused {
"Restore panels"
} else {
"Focus canvas"
})
.size(12)
)
.padding(6)
.on_press(super::super::canvas_workspace::intent(
scope,
"Panels",
Message::ScenarioCanvas(CanvasEvent::Focus(context))
)),
scope,
"Panels",
keyboard,
Some(super::super::canvas_workspace::intent(
scope,
"Panels",
Message::ScenarioCanvas(CanvasEvent::Focus(context))
)),
camera
)
]
.spacing(6);
let mut navigation = row![out.width(Fill)].spacing(6);
if state.can_back(p, context) {
navigation =
navigation.push(button(text("Back").size(12)).padding(6).on_press_maybe(
@@ -148,11 +120,6 @@ pub fn view<'a>(app: &'a App, owner: Id, out: Column<'a, Message>) -> Element<'a
keyboard,
scale,
Message::ScenarioCanvas(CanvasEvent::Shelf(context, Shelf::Selection)),
clean.then_some(Message::ScenarioCanvas(CanvasEvent::Camera(
context,
scope.epoch,
super::super::canvas_workspace::Event::Focus
))),
move |zoom| Message::ScenarioCanvas(CanvasEvent::Zoom(context, zoom)),
camera
)
@@ -12,6 +12,15 @@ async fn production_scenario_canvas_keeps_bounds_draft_identity_and_camera_throu
let _ = app.update(Message::Page(crate::app::Page::Behavior));
app.window_size = Size::new(1100., 700.);
let mut mounted = Mounted::new(&mut app).await;
let geometry = mounted.geometry(&app);
let scope = canvas_workspace::tests::scope(&app);
for removed in ["Canvas", "Panels"] {
assert!(!geometry.containers.contains_key(&scope.control_id(removed)));
}
assert!(
!canvas_workspace::tests::focused(&mut mounted, &app, "viewport"),
"direct editing needs no activation or initial keyboard focus grab"
);
for size in [Size::new(1100., 700.), Size::new(1440., 900.)] {
app.window_size = size;
mounted.settle(&mut app).await;
@@ -1362,6 +1371,11 @@ async fn production_scenario_camera_external_controls_bounds_and_retained_deltas
let size = Size::new(app.window_size.width + 90., app.window_size.height + 35.);
let task = app.update(Message::WindowResized(size));
mounted.perform(&mut app, task).await;
} else if boundary == "Panels" {
// Panel layout remains a presentation command, not canvas activation.
let context = app.scenario_context().unwrap();
let task = app.update(Message::ScenarioCanvas(CanvasEvent::Focus(context)));
mounted.perform(&mut app, task).await;
} else {
let id = scope(&app).control_id(boundary);
let at = mounted.geometry(&app).containers[&id].center();
@@ -1531,10 +1545,7 @@ async fn production_scenario_keyboard_enters_activates_draws_focus_and_returns_t
)));
assert_eq!(app.behavior.scenario.presentation.pan, iced::Vector::ZERO);
assert!(focused(&mut mounted, &app, "Fit"));
tab_to(&mut mounted, &mut app, "Canvas").await;
mounted
.batch(&mut app, &[key(Named::Enter)], mouse::Cursor::Unavailable)
.await;
tab_to(&mut mounted, &mut app, "viewport").await;
assert!(focused(&mut mounted, &app, "viewport"));
mounted
.batch(&mut app, &[key(Named::Escape)], mouse::Cursor::Unavailable)