forked from AuroraMiddleware/gtk
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)
|
const GtkCrossingData *data)
|
||||||
{
|
{
|
||||||
GtkEventControllerPrivate *priv;
|
GtkEventControllerPrivate *priv;
|
||||||
|
GtkWidget *old_target, *new_target;
|
||||||
|
|
||||||
priv = gtk_event_controller_get_instance_private (controller);
|
priv = gtk_event_controller_get_instance_private (controller);
|
||||||
|
|
||||||
if (priv->widget && !gtk_widget_is_sensitive (priv->widget))
|
if (priv->widget && !gtk_widget_is_sensitive (priv->widget))
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
if (priv->limit == GTK_LIMIT_SAME_NATIVE &&
|
old_target = data->old_target;
|
||||||
(!same_native (priv->widget, data->old_target) ||
|
new_target = data->new_target;
|
||||||
!same_native (priv->widget, 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 TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
Loading…
Reference in New Issue
Block a user