X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-window.c;h=4cd205a0226933aa5113e60dbfdb08422285ab59;hb=3937a33dfda49381aae84fe3f37f08f2dd9244c0;hp=4c3fcf2397ab7ce4eb64ceb77e5b7b4f72bec9d9;hpb=1aa84014113a4c139d31e4da47616cd097fc7348;p=evince.git diff --git a/shell/ev-window.c b/shell/ev-window.c index 4c3fcf23..4cd205a0 100644 --- a/shell/ev-window.c +++ b/shell/ev-window.c @@ -2220,7 +2220,8 @@ ev_window_print_dialog_response_cb (GtkDialog *dialog, GtkPrintPages print_pages; const gchar *file_format; - if (response == GTK_RESPONSE_CANCEL) { + if (response != GTK_RESPONSE_OK && + response != GTK_RESPONSE_APPLY) { gtk_widget_destroy (GTK_WIDGET (dialog)); window->priv->print_dialog = NULL; @@ -3809,6 +3810,7 @@ static void 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); } @@ -4575,29 +4577,11 @@ static void 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), @@ -4611,11 +4595,8 @@ launch_external_uri (EvWindow *window, EvLinkAction *action) 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 @@ -4752,7 +4733,6 @@ image_save_dialog_response_cb (GtkWidget *fc, GError *error = NULL; GdkPixbuf *pixbuf; gchar *uri; - gchar *uri_extension; gchar **extensions; gchar *filename; gchar *file_format; @@ -4783,27 +4763,31 @@ image_save_dialog_response_cb (GtkWidget *fc, } 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);