diff options
author | Matthias Clasen <mclasen@redhat.com> | 2019-05-02 19:11:30 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2019-05-02 15:50:44 -0400 |
commit | 65233726f840adb97caff13f131a803ea3cd31e7 (patch) | |
tree | 91c33d10c9a2af922c39eb6585426ab966e57462 /gtk/gtkeventcontroller.c | |
parent | 19227d978954fb0d1e19503bd1ab59a6c8731f41 (diff) | |
download | gtk+-65233726f840adb97caff13f131a803ea3cd31e7.tar.gz |
event controller: Don't deliver events to insensitive widgets
This is another way to avoid delivering events
to insensitive widgets.
Diffstat (limited to 'gtk/gtkeventcontroller.c')
-rw-r--r-- | gtk/gtkeventcontroller.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/gtk/gtkeventcontroller.c b/gtk/gtkeventcontroller.c index aed43c3d5e..4cfb498f2f 100644 --- a/gtk/gtkeventcontroller.c +++ b/gtk/gtkeventcontroller.c @@ -63,6 +63,7 @@ gtk_event_controller_set_widget (GtkEventController *self, GtkEventControllerPrivate *priv = gtk_event_controller_get_instance_private (self); priv->widget = widget; + priv->responsive = gtk_widget_get_sensitive (widget); } static void @@ -74,6 +75,18 @@ gtk_event_controller_unset_widget (GtkEventController *self) } static gboolean +gtk_event_controller_filter_event_default (GtkEventController *self, + const GdkEvent *event) +{ + GtkEventControllerPrivate *priv = gtk_event_controller_get_instance_private (self); + + if (priv->widget) + return !gtk_widget_get_sensitive (priv->widget); + + return FALSE; +} + +static gboolean gtk_event_controller_handle_event_default (GtkEventController *self, const GdkEvent *event) { @@ -128,7 +141,7 @@ gtk_event_controller_class_init (GtkEventControllerClass *klass) klass->set_widget = gtk_event_controller_set_widget; klass->unset_widget = gtk_event_controller_unset_widget; - klass->filter_event = gtk_event_controller_handle_event_default; + klass->filter_event = gtk_event_controller_filter_event_default; klass->handle_event = gtk_event_controller_handle_event_default; object_class->set_property = gtk_event_controller_set_property; |