[Xfce4-commits] <midori:master> Entangle destroy/ free of transfers
Christian Dywan
noreply at xfce.org
Sun Mar 10 23:58:02 CET 2013
Updating branch refs/heads/master
to 02e52bf2ec58a251125bfde0fbd1686c653c6bae (commit)
from c9e1c7cd5f90765634bafb555ffb464ba08eca83 (commit)
commit 02e52bf2ec58a251125bfde0fbd1686c653c6bae
Author: Christian Dywan <christian at twotoasts.de>
Date: Sun Mar 10 23:44:54 2013 +0100
Entangle destroy/ free of transfers
Fixes: https://bugs.launchpad.net/midori/+bug/1153130
toolbars/midori-transferbar.c | 27 +++++++++++++--------------
1 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/toolbars/midori-transferbar.c b/toolbars/midori-transferbar.c
index c4db861..34abb72 100644
--- a/toolbars/midori-transferbar.c
+++ b/toolbars/midori-transferbar.c
@@ -47,27 +47,26 @@ typedef struct
} TransferInfo;
static gboolean
-midori_transferbar_info_free (gpointer data)
+midori_transferbar_info_free (TransferInfo* info)
{
- TransferInfo* info = data;
MidoriTransferbar* transferbar = info->transferbar;
transferbar->infos = g_list_remove (transferbar->infos, info);
g_object_unref (info->download);
- gtk_widget_destroy (info->toolitem);
g_slice_free (TransferInfo, info);
- if (!transferbar->infos || !g_list_nth_data (transferbar->infos, 0))
- gtk_widget_hide (GTK_WIDGET (transferbar->clear));
-
return FALSE;
}
static void
-midori_transferbar_button_destroy_cb (GtkWidget* button,
- TransferInfo* info)
+midori_transferbar_info_destroy (TransferInfo* info)
{
- g_idle_add (midori_transferbar_info_free, info);
+ MidoriTransferbar* transferbar = info->transferbar;
+
+ gtk_widget_destroy (info->toolitem);
+
+ if (!transferbar->infos || !g_list_nth_data (transferbar->infos, 0))
+ gtk_widget_hide (GTK_WIDGET (transferbar->clear));
}
static void
@@ -133,7 +132,7 @@ midori_transferbar_download_button_clicked_cb (GtkWidget* button,
{
WebKitDownload* download = info->download;
if (midori_download_action_clear (download, button, NULL))
- gtk_widget_destroy (button);
+ midori_transferbar_info_destroy (info);
}
void
@@ -157,7 +156,7 @@ midori_transferbar_check_size (GtkWidget* statusbar,
TransferInfo* info = list->data;
if (midori_download_is_finished (info->download)
|| webkit_download_get_status (info->download) == WEBKIT_DOWNLOAD_STATUS_STARTED)
- gtk_widget_destroy (info->button);
+ midori_transferbar_info_destroy (info);
}
}
#endif
@@ -208,8 +207,8 @@ midori_transferbar_add_download_item (MidoriTransferbar* transferbar,
info->button = button;
info->toolitem = GTK_WIDGET (toolitem);
info->transferbar = transferbar;
- g_signal_connect (button, "destroy",
- G_CALLBACK (midori_transferbar_button_destroy_cb), info);
+ g_signal_connect_swapped (button, "destroy",
+ G_CALLBACK (midori_transferbar_info_free), info);
transferbar->infos = g_list_prepend (transferbar->infos, info);
g_signal_connect (download, "notify::progress",
@@ -231,7 +230,7 @@ midori_transferbar_clear_clicked_cb (GtkWidget* button,
{
TransferInfo* info = list->data;
if (midori_download_is_finished (info->download))
- gtk_widget_destroy (info->button);
+ midori_transferbar_info_destroy (info);
}
}
More information about the Xfce4-commits
mailing list