X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=downloads.c;fp=downloads.c;h=9f8c73de54a968492577163213bde342c8ad90ea;hb=1e1cff8509043df4dbd5856b579c5cf2bb0cb0ba;hp=1cf3bef9a5b80c79d652bb0b813ec3b5c72222ba;hpb=8b11d6f8f956fd255eadc3d64dbca5ede0e9db88;p=chorizo.git diff --git a/downloads.c b/downloads.c index 1cf3bef..9f8c73d 100644 --- a/downloads.c +++ b/downloads.c @@ -85,9 +85,9 @@ download_handle(WebKitDownload *download, gchar *suggested_filename, GtkToolItem *tb; GtkWidget *chooser = gtk_file_chooser_dialog_new( - "Choose download location", GTK_WINDOW(dm.win), - GTK_FILE_CHOOSER_ACTION_SAVE, "Save file", GTK_RESPONSE_ACCEPT, - "Cancel", GTK_RESPONSE_CANCEL, NULL); + "Save File", GTK_WINDOW(dm.win), GTK_FILE_CHOOSER_ACTION_SAVE, + "Cancel", GTK_RESPONSE_CANCEL, "Save", GTK_RESPONSE_ACCEPT, + NULL); gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(chooser), (char *)data); gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(chooser), @@ -95,48 +95,44 @@ download_handle(WebKitDownload *download, gchar *suggested_filename, gtk_file_chooser_set_do_overwrite_confirmation( GTK_FILE_CHOOSER(chooser), TRUE); gint res = gtk_dialog_run(GTK_DIALOG(chooser)); - switch (res) { - case GTK_RESPONSE_ACCEPT: + + if (res != GTK_RESPONSE_ACCEPT) { + gtk_widget_destroy(chooser); + } else { uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(chooser)); - webkit_download_set_destination( - download, - gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(chooser))); - break; - case GTK_RESPONSE_CANCEL: - return FALSE; - default: - return FALSE; + webkit_download_set_destination(download, uri); + + remove(uri + 7); // Remove before overwrite + + gtk_widget_destroy(chooser); + + tb = gtk_tool_button_new(NULL, NULL); + gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(tb), + "network-receive"); + gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), uri); + gtk_toolbar_insert(GTK_TOOLBAR(dm.toolbar), tb, 0); + gtk_widget_show_all(dm.win); + + g_signal_connect(G_OBJECT(download), + "notify::estimated-progress", + G_CALLBACK(changed_download_progress), tb); + + downloads++; + g_signal_connect(G_OBJECT(download), "finished", + G_CALLBACK(download_finished), tb); + + g_object_ref(download); + + struct DownloadItem *payload = malloc(sizeof(*payload)); + payload->tb = (GtkToolButton *)tb; + payload->download = download; + g_signal_connect(G_OBJECT(tb), "clicked", + G_CALLBACK(download_click), payload); + g_signal_connect(G_OBJECT(payload->download), "failed", + G_CALLBACK(download_cancel), payload); + g_signal_connect(G_OBJECT(tb), "destroy_event", + G_CALLBACK(g_free), payload); } - - gtk_widget_destroy(chooser); - - remove(uri + 7); // Remove before overwrite - tb = gtk_tool_button_new(NULL, NULL); - gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(tb), "network-receive"); - gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), uri); - gtk_toolbar_insert(GTK_TOOLBAR(dm.toolbar), tb, 0); - gtk_widget_show_all(dm.win); - - g_signal_connect(G_OBJECT(download), "notify::estimated-progress", - G_CALLBACK(changed_download_progress), tb); - - downloads++; - g_signal_connect(G_OBJECT(download), "finished", - G_CALLBACK(download_finished), tb); - - g_object_ref(download); - - struct DownloadItem *payload = malloc(sizeof(*payload)); - payload->tb = (GtkToolButton *)tb; - payload->download = download; - g_signal_connect(G_OBJECT(tb), "clicked", G_CALLBACK(download_click), - payload); - g_signal_connect(G_OBJECT(tb), "failed", G_CALLBACK(download_cancel), - payload); - g_signal_connect(G_OBJECT(tb), "destroy_event", G_CALLBACK(g_free), - payload); - - //Propagate-- to whom it may concern. return FALSE; }