static void
midori_view_download_save_as_response_cb (GtkWidget* dialog,
gint response,
- WebKitDownload* download)
+ MidoriBrowser* browser)
{
+ WebKitDownload* download = g_object_get_data (G_OBJECT (dialog), "download");
if (response == GTK_RESPONSE_ACCEPT)
{
gchar* uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
- MidoriBrowser* browser = midori_browser_get_for_widget (dialog);
webkit_download_set_destination_uri (download, uri);
midori_browser_add_download_item (browser, download);
g_free (uri);
}
else
g_object_unref (download);
- gtk_widget_destroy (dialog);
+ gtk_widget_hide (dialog);
}
static gboolean
g_signal_emit (browser, signals[ADD_DOWNLOAD], 0, download);
if (!webkit_download_get_destination_uri (download))
{
+ gchar* folder;
if (g_object_get_data (G_OBJECT (download), "save-as-download"))
{
- GtkWidget* dialog = gtk_file_chooser_dialog_new (
- _("Save file"), GTK_WINDOW (browser),
- GTK_FILE_CHOOSER_ACTION_SAVE,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
- NULL);
- gtk_window_set_icon_name (GTK_WINDOW (dialog), GTK_STOCK_SAVE);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (browser));
- /* FIXME: Remember the last folder
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), last_dir); */
+ static GtkWidget* dialog = NULL;
+
+ if (!dialog)
+ {
+ dialog = gtk_file_chooser_dialog_new (
+ _("Save file"), GTK_WINDOW (browser),
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT,
+ NULL);
+ gtk_window_set_icon_name (GTK_WINDOW (dialog), GTK_STOCK_SAVE);
+ gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (browser));
+ gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
+ folder = katze_object_get_string (browser->settings, "download-folder");
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dialog), folder);
+ g_free (folder);
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (midori_view_download_save_as_response_cb), browser);
+ }
+ g_object_set_data (G_OBJECT (dialog), "download", download);
gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog),
webkit_download_get_suggested_filename (download));
gtk_widget_show (dialog);
- g_signal_connect (dialog, "response",
- G_CALLBACK (midori_view_download_save_as_response_cb), download);
}
else
{
- gchar* folder;
gchar* filename;
gchar* uri;