diff options
Diffstat (limited to 'gtk/gtkselection.c')
-rw-r--r-- | gtk/gtkselection.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/gtk/gtkselection.c b/gtk/gtkselection.c index d7638787ec..d973e73741 100644 --- a/gtk/gtkselection.c +++ b/gtk/gtkselection.c @@ -102,7 +102,6 @@ struct _GtkIncrConversion struct _GtkIncrInfo { - GtkWidget *widget; /* Selection owner */ GdkWindow *requestor; /* Requestor window - we create a GdkWindow so we can receive events */ GdkAtom selection; /* Selection we're sending */ @@ -547,19 +546,6 @@ gtk_selection_remove_all (GtkWidget *widget) /* Remove pending requests/incrs for this widget */ - tmp_list = current_incrs; - while (tmp_list) - { - next = tmp_list->next; - if (((GtkIncrInfo *)tmp_list->data)->widget == widget) - { - current_incrs = g_list_remove_link (current_incrs, tmp_list); - /* structure will be freed in timeout */ - g_list_free (tmp_list); - } - tmp_list = next; - } - tmp_list = current_retrievals; while (tmp_list) { @@ -1056,8 +1042,9 @@ gtk_selection_request (GtkWidget *widget, return FALSE; info = g_new (GtkIncrInfo, 1); + + g_object_ref (widget); - info->widget = widget; info->selection = event->selection; info->num_incrs = 0; @@ -1211,12 +1198,14 @@ gtk_selection_request (GtkWidget *widget, gdk_selection_send_notify (event->requestor, event->selection, event->target, event->property, event->time); } - + if (info->num_incrs == 0) { g_free (info->conversions); g_free (info); } + + g_object_unref (widget); return TRUE; } |