find_bar_close_cb (EggFindBar *find_bar,
EvWindow *ev_window)
{
+ ev_view_find_cancel (EV_VIEW (ev_window->priv->view));
update_chrome_flag (ev_window, EV_CHROME_FINDBAR, FALSE);
update_chrome_visibility (ev_window);
}
launch_external_uri (EvWindow *window, EvLinkAction *action)
{
const gchar *uri = ev_link_action_get_uri (action);
- const char *content_type;
- GFile *file;
- GFileInfo *file_info;
- GAppInfo *app;
- GList *file_list = NULL;
GError *error = NULL;
+ gboolean ret;
- file = g_file_new_for_uri (uri);
- file_info = g_file_query_info (file,
- G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
- 0, NULL, NULL);
- if (file_info == NULL) {
- g_object_unref (file);
- return;
- }
-
- content_type = g_file_info_get_content_type (file_info);
- app = g_app_info_get_default_for_type (content_type, TRUE);
- g_object_unref (file_info);
-
- file_list = g_list_append (file_list, file);
-
- if (!g_app_info_launch (app, file_list, NULL, &error)) {
+ ret = g_app_info_launch_default_for_uri (uri, NULL, &error);
+ if (ret == FALSE) {
GtkWidget *dialog;
dialog = gtk_message_dialog_new (GTK_WINDOW (window),
G_CALLBACK (gtk_widget_destroy),
NULL);
gtk_widget_show (dialog);
+ g_error_free(error);
}
-
- g_object_unref (app);
- g_object_unref (file);
- g_list_free (file_list);
}
static void
GError *error = NULL;
GdkPixbuf *pixbuf;
gchar *uri;
- gchar *uri_extension;
gchar **extensions;
gchar *filename;
gchar *file_format;
}
extensions = gdk_pixbuf_format_get_extensions (format);
- uri_extension = g_strconcat (uri, ".", extensions[0], NULL);
+ if (g_str_has_suffix(uri, extensions[0])) {
+ gchar *uri_extension;
+
+ uri_extension = g_strconcat (uri, ".", extensions[0], NULL);
+ target_file = g_file_new_for_uri (uri_extension);
+ g_free (uri_extension);
+ } else {
+ target_file = g_file_new_for_uri (uri);
+ }
g_strfreev(extensions);
- file_format = gdk_pixbuf_format_get_name (format);
+ g_free (uri);
- target_file = g_file_new_for_uri (uri_extension);
is_native = g_file_is_native (target_file);
-
if (is_native) {
filename = g_file_get_path (target_file);
} else {
filename = ev_tmp_filename ("saveimage");
}
-
- g_free (uri);
- g_free (uri_extension);
ev_document_doc_mutex_lock ();
pixbuf = ev_document_images_get_image (EV_DOCUMENT_IMAGES (ev_window->priv->document),
ev_window->priv->image);
ev_document_doc_mutex_unlock ();
-
+
+ file_format = gdk_pixbuf_format_get_name (format);
gdk_pixbuf_save (pixbuf, filename, file_format, &error, NULL);
g_free (file_format);
g_object_unref (pixbuf);