case WEBKIT_DOWNLOAD_STATUS_FINISHED:
{
GtkWidget* icon;
+
icon = gtk_image_new_from_stock (GTK_STOCK_OPEN, GTK_ICON_SIZE_MENU);
gtk_button_set_image (GTK_BUTTON (button), icon);
- if (g_object_get_data (G_OBJECT (download), "open"))
+ if (g_object_get_data (G_OBJECT (download), "open-download"))
gtk_button_clicked (GTK_BUTTON (button));
break;
}
WebKitDownload* download,
MidoriBrowser* browser)
{
- GtkWidget* dialog;
- gchar* mime_type;
- gchar* description;
- gchar* title;
- GdkScreen* screen;
- GtkIconTheme* icon_theme;
-
- dialog = gtk_message_dialog_new (
- NULL, 0, GTK_MESSAGE_WARNING, GTK_BUTTONS_NONE,
- _("Open or download file"));
- mime_type = katze_object_get_string (view, "mime-type");
- description = g_content_type_get_description (mime_type);
- gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
- _("File Type: %s ('%s')"), description, mime_type);
- g_free (mime_type);
- g_free (description);
- gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog), FALSE);
- /* i18n: A file open dialog title, ie. "Open http://fila.com/manual.tgz" */
- title = g_strdup_printf (_("Open %s"),
- webkit_download_get_suggested_filename (download));
- gtk_window_set_title (GTK_WINDOW (dialog), title);
- g_free (title);
- screen = gtk_widget_get_screen (dialog);
- if (screen)
+ if (!webkit_download_get_destination_uri (download))
{
- icon_theme = gtk_icon_theme_get_for_screen (screen);
- if (gtk_icon_theme_has_icon (icon_theme, STOCK_TRANSFER))
- gtk_window_set_icon_name (GTK_WINDOW (dialog), STOCK_TRANSFER);
- else
- gtk_window_set_icon_name (GTK_WINDOW (dialog), GTK_STOCK_OPEN);
- }
- gtk_dialog_add_buttons (GTK_DIALOG (dialog),
- GTK_STOCK_SAVE, 1,
- GTK_STOCK_CANCEL, 2,
- GTK_STOCK_OPEN, 3,
- NULL);
- switch (gtk_dialog_run (GTK_DIALOG (dialog)))
- {
- case 3:
- g_object_set_data (G_OBJECT (download), "open", (gpointer)1);
- case 1:
- gtk_widget_destroy (dialog);
- if (!webkit_download_get_destination_uri (download))
- {
- gchar* folder = katze_object_get_string (browser->settings,
- "download-folder");
- gchar* filename = g_build_filename (folder,
- webkit_download_get_suggested_filename (download), NULL);
- g_free (folder);
- gchar* uri = g_filename_to_uri (filename, NULL, NULL);
- g_free (filename);
- webkit_download_set_destination_uri (download, uri);
- g_free (uri);
- }
- midori_browser_add_download_item (browser, download);
- return TRUE;
- case 2:
- break;
+ gchar* folder;
+ gchar* filename;
+ gchar* uri;
+
+ folder = katze_object_get_string (browser->settings, "download-folder");
+ filename = g_build_filename (folder,
+ webkit_download_get_suggested_filename (download), NULL);
+ g_free (folder);
+ uri = g_filename_to_uri (filename, NULL, NULL);
+ g_free (filename);
+ webkit_download_set_destination_uri (download, uri);
+ g_free (uri);
}
-
- gtk_widget_destroy (dialog);
- return FALSE;
+ midori_browser_add_download_item (browser, download);
+ return TRUE;
}
#endif
gchar* title;
gchar* data;
- #if WEBKIT_CHECK_VERSION (1, 1, 3)
- if (!success && webkit_web_view_can_show_mime_type (
- WEBKIT_WEB_VIEW (view->web_view), view->mime_type))
- #else
if (!success)
- #endif
{
/* i18n: The title of the 404 - Not found error page */
title = g_strdup_printf (_("Not found - %s"), view->uri);
WebKitWebPolicyDecision* decision,
MidoriView* view)
{
- gchar* uri;
+ #if WEBKIT_CHECK_VERSION (1, 1, 3)
+ GtkWidget* dialog;
+ gchar* content_type;
+ gchar* description;
+ gchar* title;
+ GdkScreen* screen;
+ GtkIconTheme* icon_theme;
+ gint response;
+ #endif
if (web_frame != webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (web_view)))
return FALSE;
- katze_assign (view->mime_type, g_strdup (mime_type));
- midori_view_update_icon (view, NULL);
- g_object_notify (G_OBJECT (view), "mime-type");
-
if (webkit_web_view_can_show_mime_type (WEBKIT_WEB_VIEW (web_view), mime_type))
+ {
+ katze_assign (view->mime_type, g_strdup (mime_type));
+ midori_view_update_icon (view, NULL);
+ g_object_notify (G_OBJECT (view), "mime-type");
return FALSE;
+ }
#if WEBKIT_CHECK_VERSION (1, 1, 3)
- webkit_web_policy_decision_download (decision);
- return TRUE;
+ dialog = gtk_message_dialog_new (
+ NULL, 0, GTK_MESSAGE_WARNING, GTK_BUTTONS_NONE,
+ _("Open or download file"));
+ #if GLIB_CHECK_VERSION (2, 18, 0)
+ content_type = g_content_type_from_mime_type (mime_type);
+ #else
+ content_type = g_strdup (mime_type);
#endif
+ description = g_content_type_get_description (content_type);
+ g_free (content_type);
+ gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
+ _("File Type: %s ('%s')"), description, mime_type);
+ g_free (description);
+ gtk_window_set_skip_taskbar_hint (GTK_WINDOW (dialog), FALSE);
+ /* i18n: A file open dialog title, ie. "Open http://fila.com/manual.tgz" */
+ title = g_strdup_printf (_("Open %s"),
+ webkit_network_request_get_uri (request));
+ gtk_window_set_title (GTK_WINDOW (dialog), title);
+ g_free (title);
+ screen = gtk_widget_get_screen (dialog);
+ if (screen)
+ {
+ icon_theme = gtk_icon_theme_get_for_screen (screen);
+ if (gtk_icon_theme_has_icon (icon_theme, STOCK_TRANSFER))
+ gtk_window_set_icon_name (GTK_WINDOW (dialog), STOCK_TRANSFER);
+ else
+ gtk_window_set_icon_name (GTK_WINDOW (dialog), GTK_STOCK_OPEN);
+ }
+ gtk_dialog_add_buttons (GTK_DIALOG (dialog),
+ GTK_STOCK_SAVE, 1,
+ GTK_STOCK_CANCEL, 2,
+ GTK_STOCK_OPEN, 3,
+ NULL);
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+ g_object_set_data (G_OBJECT (view), "open-download", (gpointer)0);
+ switch (response)
+ {
+ case 3:
+ g_object_set_data (G_OBJECT (view), "open-download", (gpointer)1);
+ case 1:
+ webkit_web_policy_decision_download (decision);
+ /* Apparently WebKit will continue loading which ends in an error.
+ It's unclear whether it's a bug or we are doing something wrong. */
+ webkit_web_view_stop_loading (WEBKIT_WEB_VIEW (view->web_view));
+ return TRUE;
+ case 2:
+ default:
+ /* Apparently WebKit will continue loading which ends in an error.
+ It's unclear whether it's a bug or we are doing something wrong. */
+ webkit_web_view_stop_loading (WEBKIT_WEB_VIEW (view->web_view));
+ return FALSE;
+ }
+ #else
+ katze_assign (view->mime_type, NULL);
+ midori_view_update_icon (view, NULL);
+ g_object_notify (G_OBJECT (view), "mime-type");
uri = g_strdup_printf ("error:nodisplay %s",
webkit_network_request_get_uri (request));
g_free (uri);
return TRUE;
+ #endif
}
#if WEBKIT_CHECK_VERSION (1, 1, 3)
MidoriView* view)
{
gboolean handled;
+ g_object_set_data (G_OBJECT (download), "open-download",
+ g_object_get_data (G_OBJECT (view), "open-download"));
g_signal_emit (view, signals[DOWNLOAD_REQUESTED], 0, download, &handled);
return handled;
}