From a32933b056a81e3b4325949450dd92e6b54c740d Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sun, 11 Mar 2018 13:38:19 +0100 Subject: [PATCH] eventcontrollerkey: Add function to forward stuff elsewhere --- gtk/gtkeventcontrollerkey.c | 21 ++++++++++++++++++++- gtk/gtkeventcontrollerkey.h | 4 ++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/gtk/gtkeventcontrollerkey.c b/gtk/gtkeventcontrollerkey.c index 13015312c7..2469f7da3c 100644 --- a/gtk/gtkeventcontrollerkey.c +++ b/gtk/gtkeventcontrollerkey.c @@ -21,7 +21,7 @@ #include "gtkintl.h" #include "gtkprivate.h" -#include "gtkwidget.h" +#include "gtkwidgetprivate.h" #include "gtkeventcontrollerprivate.h" #include "gtkeventcontrollerkey.h" #include "gtkbindings.h" @@ -215,3 +215,22 @@ gtk_event_controller_key_get_im_context (GtkEventControllerKey *controller) return controller->im_context; } + +gboolean +gtk_event_controller_key_forward (GtkEventControllerKey *controller, + GtkWidget *widget) +{ + g_return_val_if_fail (GTK_IS_EVENT_CONTROLLER_KEY (controller), FALSE); + g_return_val_if_fail (GTK_IS_WIDGET (widget), FALSE); + g_return_val_if_fail (controller->current_event != NULL, FALSE); + + if (!gtk_widget_get_realized (widget)) + gtk_widget_realize (widget); + + if (_gtk_widget_captured_event (widget, (GdkEvent *) controller->current_event)) + return TRUE; + if (gtk_widget_event (widget, (GdkEvent *) controller->current_event)) + return TRUE; + + return FALSE; +} diff --git a/gtk/gtkeventcontrollerkey.h b/gtk/gtkeventcontrollerkey.h index 025aa336ef..00dc2a5298 100644 --- a/gtk/gtkeventcontrollerkey.h +++ b/gtk/gtkeventcontrollerkey.h @@ -52,6 +52,10 @@ void gtk_event_controller_key_set_im_context (GtkEventControllerK GDK_AVAILABLE_IN_3_24 GtkIMContext * gtk_event_controller_key_get_im_context (GtkEventControllerKey *controller); +GDK_AVAILABLE_IN_3_24 +gboolean gtk_event_controller_key_forward (GtkEventControllerKey *controller, + GtkWidget *widget); + G_END_DECLS #endif /* __GTK_EVENT_CONTROLLER_KEY_H__ */