Clear downloads when the transferbar is full

Fixes: https://bugs.launchpad.net/midori/+bug/851452
This commit is contained in:
Walther Maldonado 2011-10-15 19:00:21 +02:00 committed by Christian Dywan
parent a8bf171c62
commit eb45219936
2 changed files with 34 additions and 0 deletions

View file

@ -235,6 +235,9 @@ _midori_browser_update_notebook (MidoriBrowser* browser);
void void
midori_transferbar_add_download_item (MidoriTransferbar* transferbar, midori_transferbar_add_download_item (MidoriTransferbar* transferbar,
WebKitDownload* download); WebKitDownload* download);
void
midori_transferbar_check_size (GtkWidget* statusbar,
MidoriTransferbar* transferbar);
#define _action_by_name(brwsr, nme) \ #define _action_by_name(brwsr, nme) \
gtk_action_group_get_action (brwsr->action_group, 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); webkit_download_set_destination_uri (download, uri);
g_signal_emit (browser, signals[ADD_DOWNLOAD], 0, download); g_signal_emit (browser, signals[ADD_DOWNLOAD], 0, download);
midori_transferbar_add_download_item (MIDORI_TRANSFERBAR (browser->transferbar), download); midori_transferbar_add_download_item (MIDORI_TRANSFERBAR (browser->transferbar), download);
midori_transferbar_check_size (browser->statusbar,
MIDORI_TRANSFERBAR (browser->transferbar));
return TRUE; return TRUE;
} }

View file

@ -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 void
midori_transferbar_add_download_item (MidoriTransferbar* transferbar, midori_transferbar_add_download_item (MidoriTransferbar* transferbar,
WebKitDownload* download) WebKitDownload* download)