diff options
Diffstat (limited to 'gtk/gtktreeitem.c')
-rw-r--r-- | gtk/gtktreeitem.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/gtk/gtktreeitem.c b/gtk/gtktreeitem.c index aa63e09c9f..c764a0d3f0 100644 --- a/gtk/gtktreeitem.c +++ b/gtk/gtktreeitem.c @@ -697,22 +697,23 @@ gtk_tree_item_expose_child (GtkWidget *child, GtkWidget *container; GdkEventExpose *event; } *data = client_data; - GdkEventExpose child_event; if (GTK_WIDGET_DRAWABLE (child) && GTK_WIDGET_NO_WINDOW (child) && (child->window == data->event->window)) { - child_event = *data->event; + GdkEvent *child_event = gdk_event_new (GDK_EXPOSE); + child_event->expose = *data->event; + g_object_ref (child_event->expose.window); - child_event.region = gtk_widget_region_intersect (child, - data->event->region); - if (!gdk_region_empty (child_event.region)) + child_event->expose.region = gtk_widget_region_intersect (child, + data->event->region); + if (!gdk_region_empty (child_event->expose.region)) { - gdk_region_get_clipbox (child_event.region, &child_event.area); - gtk_widget_send_expose (child, (GdkEvent *) &child_event); + gdk_region_get_clipbox (child_event->expose.region, &child_event->expose.area); + gtk_widget_send_expose (child, child_event); } - gdk_region_destroy (child_event.region); + gdk_event_free (child_event); } } |