事件处理走双缓冲了

This commit is contained in:
2026-08-24 00:55:34 +08:00
parent 933ff2ec08
commit db251b5abf
21 changed files with 497 additions and 211 deletions
+12 -12
View File
@@ -178,20 +178,20 @@ TEST(selection_overlay, control_extends_selection_and_plain_click_clears_it) {
render_once(scene.get());
const auto drag = [&](Point_F first, Point_F second, Keyboard_Modifier modifiers) {
auto press = std::make_unique<Pointer_Event>(Event_Type::pointer_press);
auto press = scene->make_event<Pointer_Event>(Event_Type::pointer_press);
press->position = first;
press->button = Mouse_Button::left;
press->modifiers = modifiers;
scene->dispatch_event(std::move(press));
auto move = std::make_unique<Pointer_Event>(Event_Type::pointer_move);
scene->dispatch_event(press);
auto move = scene->make_event<Pointer_Event>(Event_Type::pointer_move);
move->position = second;
move->modifiers = modifiers;
scene->dispatch_event(std::move(move));
auto release = std::make_unique<Pointer_Event>(Event_Type::pointer_release);
scene->dispatch_event(move);
auto release = scene->make_event<Pointer_Event>(Event_Type::pointer_release);
release->position = second;
release->button = Mouse_Button::left;
release->modifiers = modifiers;
scene->dispatch_event(std::move(release));
scene->dispatch_event(release);
render_once(scene.get());
};
drag({30.0, 90.0}, {60.0, 60.0}, Keyboard_Modifier::none);
@@ -223,17 +223,17 @@ TEST(selection_overlay, time_axis_selection_keeps_axis_coordinates_while_window_
scene->set<&Render_Scene_2D::Prop::viewport>(canvas);
scene->activate_view();
render_once(scene.get());
auto press = std::make_unique<Pointer_Event>(Event_Type::pointer_press);
auto press = scene->make_event<Pointer_Event>(Event_Type::pointer_press);
press->position = {92.0, 88.0};
press->button = Mouse_Button::left;
scene->dispatch_event(std::move(press));
auto move = std::make_unique<Pointer_Event>(Event_Type::pointer_move);
scene->dispatch_event(press);
auto move = scene->make_event<Pointer_Event>(Event_Type::pointer_move);
move->position = {116.0, 56.0};
scene->dispatch_event(std::move(move));
auto release = std::make_unique<Pointer_Event>(Event_Type::pointer_release);
scene->dispatch_event(move);
auto release = scene->make_event<Pointer_Event>(Event_Type::pointer_release);
release->position = {116.0, 56.0};
release->button = Mouse_Button::left;
scene->dispatch_event(std::move(release));
scene->dispatch_event(release);
render_once(scene.get());
ASSERT_EQ(overlay->selected_regions().size(), 1u);
const Axis_Rectangle selected = overlay->selected_regions().front();