From eb45219936b39e44c824a15a606164ff369c0a81 Mon Sep 17 00:00:00 2001 From: Walther Maldonado Date: Sat, 15 Oct 2011 19:00:21 +0200 Subject: [PATCH] Clear downloads when the transferbar is full Fixes: https://bugs.launchpad.net/midori/+bug/851452 --- midori/midori-browser.c | 5 +++++ toolbars/midori-transferbar.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/midori/midori-browser.c b/midori/midori-browser.c index 1208c275..bd0db5cd 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -235,6 +235,9 @@ _midori_browser_update_notebook (MidoriBrowser* browser); void midori_transferbar_add_download_item (MidoriTransferbar* transferbar, WebKitDownload* download); +void +midori_transferbar_check_size (GtkWidget* statusbar, + MidoriTransferbar* transferbar); #define _action_by_name(brwsr, nme) \ gtk_action_group_get_action (brwsr->action_group, nme) @@ -984,6 +987,8 @@ midori_browser_prepare_download (MidoriBrowser* browser, webkit_download_set_destination_uri (download, uri); g_signal_emit (browser, signals[ADD_DOWNLOAD], 0, download); midori_transferbar_add_download_item (MIDORI_TRANSFERBAR (browser->transferbar), download); + midori_transferbar_check_size (browser->statusbar, + MIDORI_TRANSFERBAR (browser->transferbar)); return TRUE; } diff --git a/toolbars/midori-transferbar.c b/toolbars/midori-transferbar.c index 56ed20eb..52426ff8 100644 --- a/toolbars/midori-transferbar.c +++ b/toolbars/midori-transferbar.c @@ -227,6 +227,35 @@ midori_transferbar_download_button_clicked_cb (GtkWidget* button, } } +void +midori_transferbar_check_size (GtkWidget* statusbar, + MidoriTransferbar* transferbar) +{ + GtkWidget* window; + GtkRequisition req; + gint reqwidth, winwidth; + gtk_widget_size_request (statusbar, &req); + reqwidth = req.width; + window = gtk_widget_get_toplevel (GTK_WIDGET(transferbar)); + gtk_window_get_size (GTK_WINDOW(window), &winwidth, NULL); + + if (reqwidth > winwidth) + { + GList* list; + for (list = transferbar->infos; list != NULL; list = g_list_next (list)) + { + TransferInfo* info = list->data; + WebKitDownloadStatus status = webkit_download_get_status (info->download); + if (status == WEBKIT_DOWNLOAD_STATUS_ERROR + || status == WEBKIT_DOWNLOAD_STATUS_CANCELLED + || status == WEBKIT_DOWNLOAD_STATUS_FINISHED) + { + gtk_widget_destroy (info->button); + } + } + } +} + void midori_transferbar_add_download_item (MidoriTransferbar* transferbar, WebKitDownload* download) -- 2.39.5