From bb2862f9aa5e2007f4ac705cce88f7081512649a Mon Sep 17 00:00:00 2001 From: Robert Ancell Date: Fri, 18 Oct 2024 13:48:21 +1300 Subject: [PATCH] Move redispatch_event from FlKeyboardViewDelegate to FlKeyboardManager Events can only be redispatched using gdk_event_put which is not dependent on the view. Ideally the tests would mock gdk_event_put, but I wasn't able to get it working so I've added fl_keyboard_manager_set_redispatch_handler for now. --- shell/platform/linux/fl_keyboard_manager.cc | 24 +++- shell/platform/linux/fl_keyboard_manager.h | 14 +++ .../linux/fl_keyboard_manager_test.cc | 106 +++++++++--------- .../linux/fl_keyboard_view_delegate.cc | 9 -- .../linux/fl_keyboard_view_delegate.h | 12 -- shell/platform/linux/fl_view.cc | 9 -- 6 files changed, 85 insertions(+), 89 deletions(-) diff --git a/shell/platform/linux/fl_keyboard_manager.cc b/shell/platform/linux/fl_keyboard_manager.cc index 72747e79ac4ba..f8a9ccfb3357c 100644 --- a/shell/platform/linux/fl_keyboard_manager.cc +++ b/shell/platform/linux/fl_keyboard_manager.cc @@ -118,6 +118,9 @@ struct _FlKeyboardManager { GWeakRef view_delegate; + FlKeyboardManagerRedispatchEventHandler redispatch_handler; + gpointer redispatch_handler_user_data; + FlKeyEmbedderResponder* key_embedder_responder; FlKeyChannelResponder* key_channel_responder; @@ -263,9 +266,16 @@ static void responder_handle_event_callback(bool handled, view_delegate, fl_keyboard_pending_event_get_event(pending)); if (should_redispatch) { g_ptr_array_add(self->pending_redispatches, pending); - fl_keyboard_view_delegate_redispatch_event( - view_delegate, - FL_KEY_EVENT(fl_keyboard_pending_event_get_event(pending))); + FlKeyEvent* event = fl_keyboard_pending_event_get_event(pending); + if (self->redispatch_handler != nullptr) { + self->redispatch_handler(event, self->redispatch_handler_user_data); + } else { + GdkEventType event_type = + gdk_event_get_event_type(fl_key_event_get_origin(event)); + g_return_if_fail(event_type == GDK_KEY_PRESS || + event_type == GDK_KEY_RELEASE); + gdk_event_put(fl_key_event_get_origin(event)); + } } else { g_object_unref(pending); } @@ -506,3 +516,11 @@ void fl_keyboard_manager_notify_layout_changed(FlKeyboardManager* self) { g_clear_object(&self->derived_layout); self->derived_layout = fl_keyboard_layout_new(); } + +void fl_keyboard_manager_set_redispatch_handler( + FlKeyboardManager* self, + FlKeyboardManagerRedispatchEventHandler redispatch_handler, + gpointer user_data) { + self->redispatch_handler = redispatch_handler; + self->redispatch_handler_user_data = user_data; +} diff --git a/shell/platform/linux/fl_keyboard_manager.h b/shell/platform/linux/fl_keyboard_manager.h index 863af5212d978..56d1a0ff04d5a 100644 --- a/shell/platform/linux/fl_keyboard_manager.h +++ b/shell/platform/linux/fl_keyboard_manager.h @@ -102,6 +102,20 @@ GHashTable* fl_keyboard_manager_get_pressed_state(FlKeyboardManager* manager); */ void fl_keyboard_manager_notify_layout_changed(FlKeyboardManager* manager); +typedef void (*FlKeyboardManagerRedispatchEventHandler)(FlKeyEvent* event, + gpointer user_data); + +/** + * fl_keyboard_manager_set_redispatch_handler: + * @manager: the #FlKeyboardManager self. + * + * Set the handler for redispatches, for testing purposes only. + */ +void fl_keyboard_manager_set_redispatch_handler( + FlKeyboardManager* manager, + FlKeyboardManagerRedispatchEventHandler redispatch_handler, + gpointer user_data); + G_END_DECLS #endif // FLUTTER_SHELL_PLATFORM_LINUX_FL_KEYBOARD_MANAGER_H_ diff --git a/shell/platform/linux/fl_keyboard_manager_test.cc b/shell/platform/linux/fl_keyboard_manager_test.cc index d655df367a6f3..4f5d057658f0e 100644 --- a/shell/platform/linux/fl_keyboard_manager_test.cc +++ b/shell/platform/linux/fl_keyboard_manager_test.cc @@ -282,7 +282,6 @@ struct _FlMockViewDelegate { FlMockKeyBinaryMessenger* messenger; EmbedderCallHandler embedder_handler; bool text_filter_result; - RedispatchHandler redispatch_handler; const MockLayoutData* layout_data; }; @@ -330,15 +329,6 @@ static gboolean fl_mock_view_keyboard_text_filter_key_press( return self->text_filter_result; } -static void fl_mock_view_keyboard_redispatch_event( - FlKeyboardViewDelegate* view_delegate, - FlKeyEvent* event) { - FlMockViewDelegate* self = FL_MOCK_VIEW_DELEGATE(view_delegate); - if (self->redispatch_handler) { - self->redispatch_handler(event); - } -} - static guint fl_mock_view_keyboard_lookup_key( FlKeyboardViewDelegate* view_delegate, const GdkKeymapKey* key) { @@ -356,7 +346,6 @@ static void fl_mock_view_keyboard_delegate_iface_init( FlKeyboardViewDelegateInterface* iface) { iface->send_key_event = fl_mock_view_keyboard_send_key_event; iface->text_filter_key_press = fl_mock_view_keyboard_text_filter_key_press; - iface->redispatch_event = fl_mock_view_keyboard_redispatch_event; iface->lookup_key = fl_mock_view_keyboard_lookup_key; } @@ -382,11 +371,6 @@ static void fl_mock_view_set_text_filter_result(FlMockViewDelegate* self, self->text_filter_result = result; } -static void fl_mock_view_set_redispatch_handler(FlMockViewDelegate* self, - RedispatchHandler handler) { - self->redispatch_handler = std::move(handler); -} - static void fl_mock_view_set_layout(FlMockViewDelegate* self, const MockLayoutData* layout) { self->layout_data = layout; @@ -403,17 +387,23 @@ class KeyboardTester { respondToTextInputWith(false); setLayout(kLayoutUs); - handler_ = fl_keyboard_manager_new(FL_BINARY_MESSENGER(view_->messenger), + manager_ = fl_keyboard_manager_new(FL_BINARY_MESSENGER(view_->messenger), FL_KEYBOARD_VIEW_DELEGATE(view_)); + fl_keyboard_manager_set_redispatch_handler( + manager_, + [](FlKeyEvent* event, gpointer user_data) { + + }, + nullptr); } ~KeyboardTester() { g_clear_object(&view_); - g_clear_object(&handler_); + g_clear_object(&manager_); g_clear_pointer(&redispatched_events_, g_ptr_array_unref); } - FlKeyboardManager* handler() { return handler_; } + FlKeyboardManager* manager() { return manager_; } // Block until all GdkMainLoop messages are processed, which is basically // used only for channel messages. @@ -435,7 +425,7 @@ class KeyboardTester { during_redispatch_ = true; for (guint event_id = 0; event_id < event_count; event_id += 1) { FlKeyEvent* event = FL_KEY_EVENT(g_ptr_array_index(events, event_id)); - bool handled = fl_keyboard_manager_handle_event(handler_, event); + bool handled = fl_keyboard_manager_handle_event(manager_, event); EXPECT_FALSE(handled); if (handled) { first_error = first_error == -1 ? event_id : first_error; @@ -516,21 +506,25 @@ class KeyboardTester { void recordRedispatchedEventsTo(GPtrArray* storage) { redispatched_events_ = g_ptr_array_ref(storage); - fl_mock_view_set_redispatch_handler(view_, [this](FlKeyEvent* key) { - g_ptr_array_add(redispatched_events_, g_object_ref(key)); - }); + fl_keyboard_manager_set_redispatch_handler( + manager_, + [](FlKeyEvent* event, gpointer user_data) { + KeyboardTester* self = reinterpret_cast(user_data); + g_ptr_array_add(self->redispatched_events_, g_object_ref(event)); + }, + this); } void setLayout(const MockLayoutData& layout) { fl_mock_view_set_layout(view_, &layout); - if (handler_ != nullptr) { - fl_keyboard_manager_notify_layout_changed(handler_); + if (manager_ != nullptr) { + fl_keyboard_manager_notify_layout_changed(manager_); } } private: FlMockViewDelegate* view_; - FlKeyboardManager* handler_ = nullptr; + FlKeyboardManager* manager_ = nullptr; GPtrArray* redispatched_events_ = nullptr; bool during_redispatch_ = false; @@ -551,12 +545,12 @@ TEST(FlKeyboardManagerTest, DisposeWithUnresolvedPends) { tester.recordEmbedderCallsTo(call_records); g_autoptr(FlKeyEvent) event1 = fl_key_event_new( 0, TRUE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - fl_keyboard_manager_handle_event(tester.handler(), event1); + fl_keyboard_manager_handle_event(tester.manager(), event1); tester.respondToEmbedderCallsWith(true); g_autoptr(FlKeyEvent) event2 = fl_key_event_new( 0, FALSE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - fl_keyboard_manager_handle_event(tester.handler(), event2); + fl_keyboard_manager_handle_event(tester.manager(), event2); tester.flushChannelMessages(); @@ -578,7 +572,7 @@ TEST(FlKeyboardManagerTest, SingleDelegateWithAsyncResponds) { // Dispatch a key event g_autoptr(FlKeyEvent) event1 = fl_key_event_new( 0, TRUE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event1); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event1); tester.flushChannelMessages(); EXPECT_EQ(handler_handled, true); EXPECT_EQ(redispatched->len, 0u); @@ -589,13 +583,13 @@ TEST(FlKeyboardManagerTest, SingleDelegateWithAsyncResponds) { call_records[0].callback(true); tester.flushChannelMessages(); EXPECT_EQ(redispatched->len, 0u); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); call_records.clear(); /// Test 2: Two events that are unhandled by the framework g_autoptr(FlKeyEvent) event2 = fl_key_event_new( 0, FALSE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event2); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event2); tester.flushChannelMessages(); EXPECT_EQ(handler_handled, true); EXPECT_EQ(redispatched->len, 0u); @@ -606,7 +600,7 @@ TEST(FlKeyboardManagerTest, SingleDelegateWithAsyncResponds) { // Dispatch another key event g_autoptr(FlKeyEvent) event3 = fl_key_event_new( 0, TRUE, kKeyCodeKeyB, GDK_KEY_b, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event3); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event3); tester.flushChannelMessages(); EXPECT_EQ(handler_handled, true); EXPECT_EQ(redispatched->len, 0u); @@ -627,27 +621,27 @@ TEST(FlKeyboardManagerTest, SingleDelegateWithAsyncResponds) { fl_key_event_get_keyval(FL_KEY_EVENT(g_ptr_array_index(redispatched, 1))), 0x61u); - EXPECT_FALSE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_FALSE(fl_keyboard_manager_is_state_clear(tester.manager())); call_records.clear(); // Resolve redispatches EXPECT_EQ(tester.redispatchEventsAndClear(redispatched), 2); tester.flushChannelMessages(); EXPECT_EQ(call_records.size(), 0u); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); /// Test 3: Dispatch the same event again to ensure that prevention from /// redispatching only works once. g_autoptr(FlKeyEvent) event4 = fl_key_event_new( 0, FALSE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event4); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event4); tester.flushChannelMessages(); EXPECT_EQ(handler_handled, true); EXPECT_EQ(redispatched->len, 0u); EXPECT_EQ(call_records.size(), 1u); call_records[0].callback(true); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); } TEST(FlKeyboardManagerTest, SingleDelegateWithSyncResponds) { @@ -664,7 +658,7 @@ TEST(FlKeyboardManagerTest, SingleDelegateWithSyncResponds) { // Dispatch a key event g_autoptr(FlKeyEvent) event1 = fl_key_event_new( 0, TRUE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event1); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event1); tester.flushChannelMessages(); EXPECT_EQ(handler_handled, true); EXPECT_EQ(call_records.size(), 1u); @@ -673,14 +667,14 @@ TEST(FlKeyboardManagerTest, SingleDelegateWithSyncResponds) { EXPECT_EQ(redispatched->len, 0u); call_records.clear(); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); g_ptr_array_set_size(redispatched, 0); /// Test 2: An event unhandled by the framework tester.respondToEmbedderCallsWithAndRecordsTo(false, call_records); g_autoptr(FlKeyEvent) event2 = fl_key_event_new( 0, FALSE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event2); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event2); tester.flushChannelMessages(); EXPECT_EQ(handler_handled, true); EXPECT_EQ(call_records.size(), 1u); @@ -689,12 +683,12 @@ TEST(FlKeyboardManagerTest, SingleDelegateWithSyncResponds) { EXPECT_EQ(redispatched->len, 1u); call_records.clear(); - EXPECT_FALSE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_FALSE(fl_keyboard_manager_is_state_clear(tester.manager())); EXPECT_EQ(tester.redispatchEventsAndClear(redispatched), 1); EXPECT_EQ(call_records.size(), 0u); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); } TEST(FlKeyboardManagerTest, WithTwoAsyncDelegates) { @@ -713,7 +707,7 @@ TEST(FlKeyboardManagerTest, WithTwoAsyncDelegates) { g_autoptr(FlKeyEvent) event1 = fl_key_event_new( 0, TRUE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event1); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event1); EXPECT_EQ(handler_handled, true); EXPECT_EQ(redispatched->len, 0u); @@ -727,13 +721,13 @@ TEST(FlKeyboardManagerTest, WithTwoAsyncDelegates) { tester.flushChannelMessages(); EXPECT_EQ(redispatched->len, 0u); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); call_records.clear(); /// Test 2: All delegates respond false g_autoptr(FlKeyEvent) event2 = fl_key_event_new( 0, FALSE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event2); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event2); EXPECT_EQ(handler_handled, true); EXPECT_EQ(redispatched->len, 0u); @@ -753,7 +747,7 @@ TEST(FlKeyboardManagerTest, WithTwoAsyncDelegates) { EXPECT_EQ(tester.redispatchEventsAndClear(redispatched), 1); EXPECT_EQ(call_records.size(), 0u); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); } TEST(FlKeyboardManagerTest, TextInputHandlerReturnsFalse) { @@ -767,7 +761,7 @@ TEST(FlKeyboardManagerTest, TextInputHandlerReturnsFalse) { // Dispatch a key event. g_autoptr(FlKeyEvent) event = fl_key_event_new( 0, TRUE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event); tester.flushChannelMessages(); EXPECT_EQ(handler_handled, true); // The event was redispatched because no one handles it. @@ -776,7 +770,7 @@ TEST(FlKeyboardManagerTest, TextInputHandlerReturnsFalse) { // Resolve redispatched event. EXPECT_EQ(tester.redispatchEventsAndClear(redispatched), 1); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); } TEST(FlKeyboardManagerTest, TextInputHandlerReturnsTrue) { @@ -790,13 +784,13 @@ TEST(FlKeyboardManagerTest, TextInputHandlerReturnsTrue) { // Dispatch a key event. g_autoptr(FlKeyEvent) event = fl_key_event_new( 0, TRUE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - handler_handled = fl_keyboard_manager_handle_event(tester.handler(), event); + handler_handled = fl_keyboard_manager_handle_event(tester.manager(), event); tester.flushChannelMessages(); EXPECT_EQ(handler_handled, true); // The event was not redispatched because handler handles it. EXPECT_EQ(redispatched->len, 0u); - EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.handler())); + EXPECT_TRUE(fl_keyboard_manager_is_state_clear(tester.manager())); } TEST(FlKeyboardManagerTest, CorrectLogicalKeyForLayouts) { @@ -808,10 +802,10 @@ TEST(FlKeyboardManagerTest, CorrectLogicalKeyForLayouts) { auto sendTap = [&](guint8 keycode, guint keyval, guint8 group) { g_autoptr(FlKeyEvent) event1 = fl_key_event_new( 0, TRUE, keycode, keyval, static_cast(0), group); - fl_keyboard_manager_handle_event(tester.handler(), event1); + fl_keyboard_manager_handle_event(tester.manager(), event1); g_autoptr(FlKeyEvent) event2 = fl_key_event_new( 0, FALSE, keycode, keyval, static_cast(0), group); - fl_keyboard_manager_handle_event(tester.handler(), event2); + fl_keyboard_manager_handle_event(tester.manager(), event2); }; /* US keyboard layout */ @@ -901,13 +895,13 @@ TEST(FlKeyboardManagerTest, SynthesizeModifiersIfNeeded) { uint64_t physical, uint64_t logical) { // Modifier is pressed. guint state = mask; - fl_keyboard_manager_sync_modifier_if_needed(tester.handler(), state, 1000); + fl_keyboard_manager_sync_modifier_if_needed(tester.manager(), state, 1000); EXPECT_EQ(call_records.size(), 1u); EXPECT_KEY_EVENT(call_records[0], kFlutterKeyEventTypeDown, physical, logical, NULL, true); // Modifier is released. state = state ^ mask; - fl_keyboard_manager_sync_modifier_if_needed(tester.handler(), state, 1001); + fl_keyboard_manager_sync_modifier_if_needed(tester.manager(), state, 1001); EXPECT_EQ(call_records.size(), 2u); EXPECT_KEY_EVENT(call_records[1], kFlutterKeyEventTypeUp, physical, logical, NULL, true); @@ -916,7 +910,7 @@ TEST(FlKeyboardManagerTest, SynthesizeModifiersIfNeeded) { // No modifiers pressed. guint state = 0; - fl_keyboard_manager_sync_modifier_if_needed(tester.handler(), state, 1000); + fl_keyboard_manager_sync_modifier_if_needed(tester.manager(), state, 1000); EXPECT_EQ(call_records.size(), 0u); call_records.clear(); @@ -937,10 +931,10 @@ TEST(FlKeyboardManagerTest, GetPressedState) { // Dispatch a key event. g_autoptr(FlKeyEvent) event = fl_key_event_new( 0, TRUE, kKeyCodeKeyA, GDK_KEY_a, static_cast(0), 0); - fl_keyboard_manager_handle_event(tester.handler(), event); + fl_keyboard_manager_handle_event(tester.manager(), event); GHashTable* pressedState = - fl_keyboard_manager_get_pressed_state(tester.handler()); + fl_keyboard_manager_get_pressed_state(tester.manager()); EXPECT_EQ(g_hash_table_size(pressedState), 1u); gpointer physical_key = diff --git a/shell/platform/linux/fl_keyboard_view_delegate.cc b/shell/platform/linux/fl_keyboard_view_delegate.cc index 771e428c0f682..e6cb2b1ccf7d7 100644 --- a/shell/platform/linux/fl_keyboard_view_delegate.cc +++ b/shell/platform/linux/fl_keyboard_view_delegate.cc @@ -32,15 +32,6 @@ gboolean fl_keyboard_view_delegate_text_filter_key_press( self, event); } -void fl_keyboard_view_delegate_redispatch_event(FlKeyboardViewDelegate* self, - FlKeyEvent* event) { - g_return_if_fail(FL_IS_KEYBOARD_VIEW_DELEGATE(self)); - g_return_if_fail(event != nullptr); - - return FL_KEYBOARD_VIEW_DELEGATE_GET_IFACE(self)->redispatch_event(self, - event); -} - guint fl_keyboard_view_delegate_lookup_key(FlKeyboardViewDelegate* self, const GdkKeymapKey* key) { g_return_val_if_fail(FL_IS_KEYBOARD_VIEW_DELEGATE(self), 0); diff --git a/shell/platform/linux/fl_keyboard_view_delegate.h b/shell/platform/linux/fl_keyboard_view_delegate.h index 134239071aeba..70b62cb29def4 100644 --- a/shell/platform/linux/fl_keyboard_view_delegate.h +++ b/shell/platform/linux/fl_keyboard_view_delegate.h @@ -42,8 +42,6 @@ struct _FlKeyboardViewDelegateInterface { gboolean (*text_filter_key_press)(FlKeyboardViewDelegate* delegate, FlKeyEvent* event); - void (*redispatch_event)(FlKeyboardViewDelegate* delegate, FlKeyEvent* event); - guint (*lookup_key)(FlKeyboardViewDelegate* view_delegate, const GdkKeymapKey* key); @@ -79,16 +77,6 @@ gboolean fl_keyboard_view_delegate_text_filter_key_press( FlKeyboardViewDelegate* delegate, FlKeyEvent* event); -/** - * fl_keyboard_view_delegate_redispatch_event: - * - * Handles `FlKeyboardHandler`'s request to insert a GDK event to the system for - * redispatching. - */ -void fl_keyboard_view_delegate_redispatch_event( - FlKeyboardViewDelegate* delegate, - FlKeyEvent* event); - guint fl_keyboard_view_delegate_lookup_key(FlKeyboardViewDelegate* delegate, const GdkKeymapKey* key); diff --git a/shell/platform/linux/fl_view.cc b/shell/platform/linux/fl_view.cc index 3828f8ed40b58..2ac5a1a0bfbf2 100644 --- a/shell/platform/linux/fl_view.cc +++ b/shell/platform/linux/fl_view.cc @@ -385,15 +385,6 @@ static void fl_view_keyboard_delegate_iface_init( event); }; - iface->redispatch_event = [](FlKeyboardViewDelegate* view_delegate, - FlKeyEvent* event) { - GdkEventType event_type = - gdk_event_get_event_type(fl_key_event_get_origin(event)); - g_return_if_fail(event_type == GDK_KEY_PRESS || - event_type == GDK_KEY_RELEASE); - gdk_event_put(fl_key_event_get_origin(event)); - }; - iface->lookup_key = [](FlKeyboardViewDelegate* view_delegate, const GdkKeymapKey* key) -> guint { FlView* self = FL_VIEW(view_delegate);