mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-24 21:16:50 +03:00
fix gtk download window to cope with files larger than 2 gibibytes
This commit is contained in:
parent
f64b37b29f
commit
69d31afcde
@ -89,8 +89,8 @@ struct gui_download_window {
|
|||||||
|
|
||||||
GString *name;
|
GString *name;
|
||||||
GString *time_left;
|
GString *time_left;
|
||||||
gint size_total;
|
unsigned long long int size_total;
|
||||||
gint size_downloaded;
|
unsigned long long int size_downloaded;
|
||||||
gint progress;
|
gint progress;
|
||||||
gfloat time_remaining;
|
gfloat time_remaining;
|
||||||
gfloat start_time;
|
gfloat start_time;
|
||||||
@ -418,7 +418,9 @@ static gboolean nsgtk_download_update(gboolean force_update)
|
|||||||
GList *list;
|
GList *list;
|
||||||
gchar *text;
|
gchar *text;
|
||||||
gboolean update, pulse_mode = FALSE;
|
gboolean update, pulse_mode = FALSE;
|
||||||
gint downloaded = 0, total = 0, dls = 0;
|
unsigned long long int downloaded = 0;
|
||||||
|
unsigned long long int total = 0;
|
||||||
|
gint dls = 0;
|
||||||
gfloat percent, elapsed = g_timer_elapsed(dl_ctx.timer, NULL);
|
gfloat percent, elapsed = g_timer_elapsed(dl_ctx.timer, NULL);
|
||||||
|
|
||||||
dl_ctx.num_active = 0;
|
dl_ctx.num_active = 0;
|
||||||
@ -439,9 +441,8 @@ static gboolean nsgtk_download_update(gboolean force_update)
|
|||||||
dl->time_remaining = (dl->size_total -
|
dl->time_remaining = (dl->size_total -
|
||||||
dl->size_downloaded)/
|
dl->size_downloaded)/
|
||||||
dl->speed;
|
dl->speed;
|
||||||
dl->progress = (gfloat)
|
dl->progress = (double)dl->size_downloaded /
|
||||||
dl->size_downloaded /
|
(double)dl->size_total * 100;
|
||||||
dl->size_total * 100;
|
|
||||||
} else {
|
} else {
|
||||||
dl->progress++;
|
dl->progress++;
|
||||||
}
|
}
|
||||||
@ -473,9 +474,9 @@ static gboolean nsgtk_download_update(gboolean force_update)
|
|||||||
gtk_progress_bar_pulse(dl_ctx.progress);
|
gtk_progress_bar_pulse(dl_ctx.progress);
|
||||||
gtk_progress_bar_set_text(dl_ctx.progress, text);
|
gtk_progress_bar_set_text(dl_ctx.progress, text);
|
||||||
} else {
|
} else {
|
||||||
percent = total != 0 ? (gfloat)downloaded / total : 0;
|
percent = total != 0 ? (double)downloaded / (double)total : 0;
|
||||||
text = g_strdup_printf(messages_get("gtkProgressBar"),
|
text = g_strdup_printf(messages_get("gtkProgressBar"),
|
||||||
floor(percent*100), dls);
|
floor(percent * 100), dls);
|
||||||
gtk_progress_bar_set_fraction(dl_ctx.progress,
|
gtk_progress_bar_set_fraction(dl_ctx.progress,
|
||||||
percent);
|
percent);
|
||||||
gtk_progress_bar_set_text(dl_ctx.progress, text);
|
gtk_progress_bar_set_text(dl_ctx.progress, text);
|
||||||
@ -763,7 +764,7 @@ static struct gui_download_window *
|
|||||||
gui_download_window_create(download_context *ctx, struct gui_window *gui)
|
gui_download_window_create(download_context *ctx, struct gui_window *gui)
|
||||||
{
|
{
|
||||||
nsurl *url;
|
nsurl *url;
|
||||||
unsigned long total_size;
|
unsigned long long int total_size;
|
||||||
gchar *domain;
|
gchar *domain;
|
||||||
gchar *destination;
|
gchar *destination;
|
||||||
gboolean unknown_size;
|
gboolean unknown_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user