summaryrefslogtreecommitdiff
path: root/gtk/gtkeventcontroller.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-05-02 19:11:30 +0000
committerMatthias Clasen <mclasen@redhat.com>2019-05-02 15:50:44 -0400
commit65233726f840adb97caff13f131a803ea3cd31e7 (patch)
tree91c33d10c9a2af922c39eb6585426ab966e57462 /gtk/gtkeventcontroller.c
parent19227d978954fb0d1e19503bd1ab59a6c8731f41 (diff)
downloadgtk+-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.c15
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;