From 50cd4276088499093b428b54195a88c4b7a1a0ad Mon Sep 17 00:00:00 2001 From: Diego Escalante Urrelo Date: Wed, 10 Mar 2010 19:20:01 -0500 Subject: downloader-view: use update_download_row correctly on add When adding a download we should call update_download_row() *after* connecting the signal handlers or they will never be disconnected. Also, in update_download_row() we should consider that the case where it is called with a download that has already been removed as a non fatal case (i.e. just return;). This is because in downloader_view_add_download() we can have the signal handlers remove the download from the view before the manual call (it was happening vice versa before this). --- embed/downloader-view.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'embed') diff --git a/embed/downloader-view.c b/embed/downloader-view.c index 846938749..7fbb1e54b 100644 --- a/embed/downloader-view.c +++ b/embed/downloader-view.c @@ -482,7 +482,12 @@ update_download_row (DownloaderView *dv, WebKitDownload *download) #endif row_ref = get_row_from_download (dv, download); - g_return_if_fail (row_ref != NULL); + /* In downloader_view_add_download() we call this function manually to + * ensure the view has something visible in the tree view, however + * signal handlers might have already removed this download from the + * DV, this is that case. */ + if (row_ref == NULL) + return; /* Status special casing */ status = webkit_download_get_status (download); @@ -698,7 +703,6 @@ downloader_view_add_download (DownloaderView *dv, download, row_ref); - update_download_row (dv, download); update_status_icon (dv); selection = gtk_tree_view_get_selection @@ -715,6 +719,8 @@ downloader_view_add_download (DownloaderView *dv, g_signal_connect_object (download, "error", G_CALLBACK (download_error_cb), dv, 0); + update_download_row (dv, download); + /* Show it already */ g_object_get (G_OBJECT (dv->priv->window), "visible", &visible, NULL); -- cgit v1.2.3