diff --git a/engine/src/flutter/shell/platform/linux/fl_scrolling_manager.cc b/engine/src/flutter/shell/platform/linux/fl_scrolling_manager.cc index e49924a2cae..eaf8355bcb6 100644 --- a/engine/src/flutter/shell/platform/linux/fl_scrolling_manager.cc +++ b/engine/src/flutter/shell/platform/linux/fl_scrolling_manager.cc @@ -69,7 +69,7 @@ void fl_scrolling_manager_set_last_mouse_position(FlScrollingManager* self, } void fl_scrolling_manager_handle_scroll_event(FlScrollingManager* self, - GdkEventScroll* scroll_event, + GdkEvent* event, gint scale_factor) { g_return_if_fail(FL_IS_SCROLLING_MANAGER(self)); @@ -78,8 +78,6 @@ void fl_scrolling_manager_handle_scroll_event(FlScrollingManager* self, return; } - GdkEvent* event = reinterpret_cast(scroll_event); - guint event_time = gdk_event_get_time(event); gdouble event_x = 0.0, event_y = 0.0; gdk_event_get_coords(event, &event_x, &event_y); diff --git a/engine/src/flutter/shell/platform/linux/fl_scrolling_manager.h b/engine/src/flutter/shell/platform/linux/fl_scrolling_manager.h index 551a38e8994..164a12f289b 100644 --- a/engine/src/flutter/shell/platform/linux/fl_scrolling_manager.h +++ b/engine/src/flutter/shell/platform/linux/fl_scrolling_manager.h @@ -52,7 +52,7 @@ void fl_scrolling_manager_set_last_mouse_position(FlScrollingManager* manager, * Inform the scrolling manager of a scroll event. */ void fl_scrolling_manager_handle_scroll_event(FlScrollingManager* manager, - GdkEventScroll* event, + GdkEvent* event, gint scale_factor); /** diff --git a/engine/src/flutter/shell/platform/linux/fl_scrolling_manager_test.cc b/engine/src/flutter/shell/platform/linux/fl_scrolling_manager_test.cc index 0f68a4432bf..2c8897e0797 100644 --- a/engine/src/flutter/shell/platform/linux/fl_scrolling_manager_test.cc +++ b/engine/src/flutter/shell/platform/linux/fl_scrolling_manager_test.cc @@ -12,6 +12,7 @@ #include "gtest/gtest.h" +#if !FLUTTER_LINUX_GTK4 TEST(FlScrollingManagerTest, DiscreteDirectional) { g_autoptr(FlDartProject) project = fl_dart_project_new(); g_autoptr(FlEngine) engine = fl_engine_new(project); @@ -44,7 +45,7 @@ TEST(FlScrollingManagerTest, DiscreteDirectional) { event->y = 8.0; event->device = mouse; event->direction = GDK_SCROLL_UP; - fl_scrolling_manager_handle_scroll_event(manager, event, 1.0); + fl_scrolling_manager_handle_scroll_event(manager, reinterpret_cast(event), 1.0); EXPECT_EQ(pointer_events.size(), 1u); EXPECT_EQ(pointer_events[0].x, 4.0); EXPECT_EQ(pointer_events[0].y, 8.0); @@ -54,7 +55,7 @@ TEST(FlScrollingManagerTest, DiscreteDirectional) { EXPECT_EQ(pointer_events[0].scroll_delta_x, 0); EXPECT_EQ(pointer_events[0].scroll_delta_y, 53 * -1.0); event->direction = GDK_SCROLL_DOWN; - fl_scrolling_manager_handle_scroll_event(manager, event, 1.0); + fl_scrolling_manager_handle_scroll_event(manager, reinterpret_cast(event), 1.0); EXPECT_EQ(pointer_events.size(), 2u); EXPECT_EQ(pointer_events[1].x, 4.0); EXPECT_EQ(pointer_events[1].y, 8.0); @@ -64,7 +65,7 @@ TEST(FlScrollingManagerTest, DiscreteDirectional) { EXPECT_EQ(pointer_events[1].scroll_delta_x, 0); EXPECT_EQ(pointer_events[1].scroll_delta_y, 53 * 1.0); event->direction = GDK_SCROLL_LEFT; - fl_scrolling_manager_handle_scroll_event(manager, event, 1.0); + fl_scrolling_manager_handle_scroll_event(manager, reinterpret_cast(event), 1.0); EXPECT_EQ(pointer_events.size(), 3u); EXPECT_EQ(pointer_events[2].x, 4.0); EXPECT_EQ(pointer_events[2].y, 8.0); @@ -74,7 +75,7 @@ TEST(FlScrollingManagerTest, DiscreteDirectional) { EXPECT_EQ(pointer_events[2].scroll_delta_x, 53 * -1.0); EXPECT_EQ(pointer_events[2].scroll_delta_y, 0); event->direction = GDK_SCROLL_RIGHT; - fl_scrolling_manager_handle_scroll_event(manager, event, 1.0); + fl_scrolling_manager_handle_scroll_event(manager, reinterpret_cast(event), 1.0); EXPECT_EQ(pointer_events.size(), 4u); EXPECT_EQ(pointer_events[3].x, 4.0); EXPECT_EQ(pointer_events[3].y, 8.0); @@ -119,7 +120,7 @@ TEST(FlScrollingManagerTest, DiscreteScrolling) { event->delta_y = 2.0; event->device = mouse; event->direction = GDK_SCROLL_SMOOTH; - fl_scrolling_manager_handle_scroll_event(manager, event, 1.0); + fl_scrolling_manager_handle_scroll_event(manager, reinterpret_cast(event), 1.0); EXPECT_EQ(pointer_events.size(), 1u); EXPECT_EQ(pointer_events[0].x, 4.0); EXPECT_EQ(pointer_events[0].y, 8.0); @@ -164,7 +165,7 @@ TEST(FlScrollingManagerTest, Panning) { event->delta_y = 2.0; event->device = touchpad; event->direction = GDK_SCROLL_SMOOTH; - fl_scrolling_manager_handle_scroll_event(manager, event, 1.0); + fl_scrolling_manager_handle_scroll_event(manager, reinterpret_cast(event), 1.0); EXPECT_EQ(pointer_events.size(), 2u); EXPECT_EQ(pointer_events[0].x, 4.0); EXPECT_EQ(pointer_events[0].y, 8.0); @@ -180,7 +181,7 @@ TEST(FlScrollingManagerTest, Panning) { EXPECT_EQ(pointer_events[1].pan_y, 53 * -2.0); EXPECT_EQ(pointer_events[1].scale, 1.0); EXPECT_EQ(pointer_events[1].rotation, 0.0); - fl_scrolling_manager_handle_scroll_event(manager, event, 1.0); + fl_scrolling_manager_handle_scroll_event(manager, reinterpret_cast(event), 1.0); EXPECT_EQ(pointer_events.size(), 3u); EXPECT_EQ(pointer_events[2].x, 4.0); EXPECT_EQ(pointer_events[2].y, 8.0); @@ -192,7 +193,7 @@ TEST(FlScrollingManagerTest, Panning) { EXPECT_EQ(pointer_events[2].scale, 1.0); EXPECT_EQ(pointer_events[2].rotation, 0.0); event->is_stop = true; - fl_scrolling_manager_handle_scroll_event(manager, event, 1.0); + fl_scrolling_manager_handle_scroll_event(manager, reinterpret_cast(event), 1.0); EXPECT_EQ(pointer_events.size(), 4u); EXPECT_EQ(pointer_events[3].x, 4.0); EXPECT_EQ(pointer_events[3].y, 8.0); @@ -429,3 +430,5 @@ TEST(FlScrollingManagerTest, UnsynchronizedZoomingAndRotating) { EXPECT_EQ(pointer_events[4].phase, kPanZoomEnd); EXPECT_GE(pointer_events[4].timestamp, pointer_events[3].timestamp); } + +#endif // !FLUTTER_LINUX_GTK4 diff --git a/engine/src/flutter/shell/platform/linux/fl_view.cc b/engine/src/flutter/shell/platform/linux/fl_view.cc index 3be51e51f46..7c84cc74585 100644 --- a/engine/src/flutter/shell/platform/linux/fl_view.cc +++ b/engine/src/flutter/shell/platform/linux/fl_view.cc @@ -364,7 +364,7 @@ static gboolean scroll_event_cb(FlView* self, GdkEventScroll* event) { // depend on GTK 3.24. fl_scrolling_manager_handle_scroll_event( - self->scrolling_manager, event, + self->scrolling_manager, reinterpret_cast(event), gtk_widget_get_scale_factor(GTK_WIDGET(self))); return TRUE; }