[gtk/matthiasc/for-master: 2/2] eventcontroller: Fix crossing event scopes
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/matthiasc/for-master: 2/2] eventcontroller: Fix crossing event scopes
- Date: Fri, 29 May 2020 23:42:27 +0000 (UTC)
commit 66120cff4b4d9685a093bba7f201a1c025aadcf9
Author: Matthias Clasen <mclasen redhat com>
Date: Fri May 29 19:39:15 2020 -0400
eventcontroller: Fix crossing event scopes
We want to deliver crossing events to controllers
with scope same-native as long as at least one of
the targets is on the same native. As a new approach,
treat out-of-scope targets like NULL, and deliver
crossing events as long as one of the targets is
not NULL.
gtk/gtkeventcontroller.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gtkeventcontroller.c b/gtk/gtkeventcontroller.c
index c513ea093d..432990ed91 100644
--- a/gtk/gtkeventcontroller.c
+++ b/gtk/gtkeventcontroller.c
@@ -289,15 +289,28 @@ gtk_event_controller_filter_crossing (GtkEventController *controller,
const GtkCrossingData *data)
{
GtkEventControllerPrivate *priv;
+ GtkWidget *old_target, *new_target;
priv = gtk_event_controller_get_instance_private (controller);
if (priv->widget && !gtk_widget_is_sensitive (priv->widget))
return TRUE;
- if (priv->limit == GTK_LIMIT_SAME_NATIVE &&
- (!same_native (priv->widget, data->old_target) ||
- !same_native (priv->widget, data->new_target)))
+ old_target = data->old_target;
+ new_target = data->new_target;
+
+ if (priv->limit == GTK_LIMIT_SAME_NATIVE)
+ {
+ /* treat out-of-scope targets like NULL */
+
+ if (!same_native (priv->widget, old_target))
+ old_target = NULL;
+
+ if (!same_native (priv->widget, new_target))
+ new_target = NULL;
+ }
+
+ if (old_target == NULL && new_target == NULL)
return TRUE;
return FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]