Retire obsolete behavior canvas scroll and tool paths
This commit is contained in:
@@ -7,7 +7,6 @@ pub(crate) const NAME_INPUT: &str = "scenario-form-name";
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum Shelf {
|
||||
Tools,
|
||||
Selection,
|
||||
}
|
||||
|
||||
|
||||
@@ -95,7 +95,7 @@ async fn production_scenario_canvas_keeps_bounds_draft_identity_and_camera_throu
|
||||
mounted.scroll(&app, "scenario-form", 500.);
|
||||
let offset = mounted.geometry(&app).scrolls[&widget::Id::new("scenario-form")].1;
|
||||
assert_eq!(mounted.geometry(&app).bounds("scenario-actions"), actions);
|
||||
for shelf in [Shelf::Tools, Shelf::Selection, Shelf::Selection] {
|
||||
for shelf in [Shelf::Selection, Shelf::Selection] {
|
||||
let _ = app.update(Message::ScenarioCanvas(CanvasEvent::Shelf(
|
||||
app.scenario_context().unwrap(),
|
||||
shelf,
|
||||
@@ -1030,7 +1030,7 @@ fn scenario_workspace_viewport_events_are_passive_guarded_and_do_not_apply_raw_f
|
||||
assert_eq!(app.canvas_epoch, epoch);
|
||||
}
|
||||
app.busy = false;
|
||||
navigation_event(&mut app, |ctx| CanvasEvent::Shelf(ctx, Shelf::Tools));
|
||||
navigation_event(&mut app, |ctx| CanvasEvent::Shelf(ctx, Shelf::Selection));
|
||||
navigation_event(&mut app, CanvasEvent::Focus);
|
||||
navigation_event(&mut app, |ctx| CanvasEvent::Zoom(ctx, None));
|
||||
assert_eq!(app.behavior.recovery_snapshot().unwrap(), raw);
|
||||
@@ -1144,27 +1144,31 @@ fn scenario_workspace_choosing_tools_preserves_valid_and_invalid_pending_editors
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn scenario_workspace_scaled_and_scrolled_scene_keeps_clicked_slots_and_message_endpoints() {
|
||||
fn scenario_workspace_scaled_and_panned_scene_keeps_clicked_slots_and_message_endpoints() {
|
||||
let f = super::super::direct_tests::fixture();
|
||||
for scale in [0.25, 0.5, 1., 2.] {
|
||||
for drag in [false, true] {
|
||||
let mut scene = Scene::sequence(&f.project, f.owner, f.call);
|
||||
let context = super::super::direct_tests::context(f.owner);
|
||||
scene.scale = scale;
|
||||
scene.scroll_offset = Vector::new(35., 40.);
|
||||
scene.camera_pan = Vector::new(35., 40.);
|
||||
scene.interaction = Some((context, CanvasTool::Message(MessageStyle::CallReply), true));
|
||||
let slot = scene.slots.last().unwrap();
|
||||
let expected = slot.slot;
|
||||
let bounds = Rectangle::new(
|
||||
Point::new(20., 80.),
|
||||
Size::new(scene.size.width * scale, scene.size.height * scale),
|
||||
Size::new(
|
||||
scene.size.width * scale + 70.,
|
||||
scene.size.height * scale + 80.,
|
||||
),
|
||||
);
|
||||
let screen = |world: Point| {
|
||||
Point::new(bounds.x + world.x * scale, bounds.y + world.y * scale)
|
||||
- scene.scroll_offset
|
||||
+ scene.camera_pan
|
||||
};
|
||||
let a = screen(Point::new(scene.lanes[&f.sender], slot.y));
|
||||
let b = screen(Point::new(scene.lanes[&f.receiver], slot.y));
|
||||
assert!(bounds.contains(a) && bounds.contains(b));
|
||||
let mut input = super::super::super::SequenceInput::default();
|
||||
let mut messages = vec![];
|
||||
let mut events = vec![
|
||||
@@ -1185,7 +1189,7 @@ fn scenario_workspace_scaled_and_scrolled_scene_keeps_clicked_slots_and_message_
|
||||
&mut input,
|
||||
&canvas::Event::Mouse(event),
|
||||
bounds,
|
||||
mouse::Cursor::Available(cursor + scene.scroll_offset),
|
||||
mouse::Cursor::Available(cursor),
|
||||
) && let Some(message) = action.into_inner().0
|
||||
{
|
||||
messages.push(message);
|
||||
@@ -1207,14 +1211,17 @@ fn scenario_workspace_scaled_nested_occurrences_and_reorder_keep_exact_sequence_
|
||||
let mut scene = Scene::sequence(&f.project, f.owner, f.call);
|
||||
let context = super::super::direct_tests::context(f.owner);
|
||||
scene.scale = scale;
|
||||
scene.scroll_offset = Vector::new(35., 40.);
|
||||
scene.camera_pan = Vector::new(35., 40.);
|
||||
let bounds = Rectangle::new(
|
||||
Point::new(20., 80.),
|
||||
Size::new(scene.size.width * scale, scene.size.height * scale),
|
||||
Size::new(
|
||||
scene.size.width * scale + 70.,
|
||||
scene.size.height * scale + 80.,
|
||||
),
|
||||
);
|
||||
let screen = |world: Point| {
|
||||
Point::new(bounds.x + world.x * scale, bounds.y + world.y * scale)
|
||||
- Vector::new(35., 40.)
|
||||
+ Vector::new(35., 40.)
|
||||
};
|
||||
let send =
|
||||
|scene: &Scene, input: &mut super::super::super::SequenceInput, event, cursor| {
|
||||
@@ -1223,7 +1230,7 @@ fn scenario_workspace_scaled_nested_occurrences_and_reorder_keep_exact_sequence_
|
||||
input,
|
||||
&canvas::Event::Mouse(event),
|
||||
bounds,
|
||||
mouse::Cursor::Available(cursor + scene.scroll_offset),
|
||||
mouse::Cursor::Available(cursor),
|
||||
)
|
||||
.and_then(|action| action.into_inner().0)
|
||||
};
|
||||
@@ -1245,6 +1252,7 @@ fn scenario_workspace_scaled_nested_occurrences_and_reorder_keep_exact_sequence_
|
||||
.find(|slot| slot.slot == expected)
|
||||
.unwrap();
|
||||
let point = screen(Point::new(scene.lanes[&f.sender], slot.y));
|
||||
assert!(bounds.contains(point));
|
||||
let mut input = super::super::super::SequenceInput::default();
|
||||
send(
|
||||
&scene,
|
||||
@@ -1921,18 +1929,15 @@ async fn scenario_workspace_open_and_back_restore_owner_and_mounted_camera_after
|
||||
details
|
||||
);
|
||||
assert_eq!(
|
||||
app.behavior.scenario.scroll_offset(),
|
||||
Vector::ZERO,
|
||||
"canvas uses camera pan, not a synthetic Scrollable offset"
|
||||
app.behavior.scenario.details_offset, details,
|
||||
"the actual Details observer acknowledges the one-shot return offset"
|
||||
);
|
||||
assert!(
|
||||
app.behavior
|
||||
.scenario
|
||||
.scroll_restore(app.scenario_context().unwrap(), ScrollArea::Page)
|
||||
.is_none()
|
||||
);
|
||||
for area in [ScrollArea::Canvas, ScrollArea::Page] {
|
||||
assert!(
|
||||
app.behavior
|
||||
.scenario
|
||||
.scroll_restore(app.scenario_context().unwrap(), area)
|
||||
.is_none()
|
||||
);
|
||||
}
|
||||
assert!(app.behavior.scenario.restore.is_none());
|
||||
assert!(std::sync::Arc::ptr_eq(
|
||||
&before_back,
|
||||
|
||||
Reference in New Issue
Block a user