summaryrefslogtreecommitdiff
path: root/gtk/gtkwidget.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkwidget.c')
-rw-r--r--gtk/gtkwidget.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 9f538f42ea..e8106fca84 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -4376,12 +4376,30 @@ gtk_widget_handle_crossing (GtkWidget *widget,
g_object_ref (widget);
+ if (crossing->old_target)
+ g_object_ref (crossing->old_target);
+ if (crossing->new_target)
+ g_object_ref (crossing->new_target);
+ if (crossing->old_descendent)
+ g_object_ref (crossing->old_descendent);
+ if (crossing->new_descendent)
+ g_object_ref (crossing->new_descendent);
+
for (l = priv->event_controllers; l; l = l->next)
{
GtkEventController *controller = l->data;
gtk_event_controller_handle_crossing (controller, crossing, x, y);
}
+ if (crossing->old_target)
+ g_object_unref (crossing->old_target);
+ if (crossing->new_target)
+ g_object_unref (crossing->new_target);
+ if (crossing->old_descendent)
+ g_object_unref (crossing->old_descendent);
+ if (crossing->new_descendent)
+ g_object_unref (crossing->new_descendent);
+
g_object_unref (widget);
}