mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-25 21:21:21 +00:00
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.
This commit is contained in:
parent
8ce1034e87
commit
66120cff4b
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user