]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Override PDF restrictions by default. Fixes bug #382700.
[evince.git] / shell / ev-window.c
index ab8eb1db085034d78ebc67f9d736a0359c44a8fa..2fbccd3842b0ca7de1aebc2f7238589b010faf99 100644 (file)
@@ -46,6 +46,7 @@
 #include "ev-document-links.h"
 #include "ev-document-fonts.h"
 #include "ev-document-find.h"
 #include "ev-document-links.h"
 #include "ev-document-fonts.h"
 #include "ev-document-find.h"
+#include "ev-document-images.h"
 #include "ev-document-security.h"
 #include "ev-document-factory.h"
 #include "ev-job-queue.h"
 #include "ev-document-security.h"
 #include "ev-document-factory.h"
 #include "ev-job-queue.h"
@@ -310,7 +311,7 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
        gboolean ok_to_print = TRUE;
        gboolean ok_to_copy = TRUE;
        gboolean has_properties = TRUE;
        gboolean ok_to_print = TRUE;
        gboolean ok_to_copy = TRUE;
        gboolean has_properties = TRUE;
-       gboolean override_restrictions = FALSE;
+       gboolean override_restrictions = TRUE;
        gboolean can_get_text = FALSE;
        gboolean has_pages = FALSE;
        gboolean can_find = FALSE;
        gboolean can_get_text = FALSE;
        gboolean has_pages = FALSE;
        gboolean can_find = FALSE;
@@ -4598,6 +4599,7 @@ register_custom_actions (EvWindow *window, GtkActionGroup *group)
                               "is_important", TRUE,
                               "short_label", _("Back"),
                               "stock_id", GTK_STOCK_GO_DOWN,
                               "is_important", TRUE,
                               "short_label", _("Back"),
                               "stock_id", GTK_STOCK_GO_DOWN,
+                              /*translators: this is the history action*/
                               "tooltip", _("Move across visited pages"),
                               NULL);
        g_signal_connect (action, "activate_link",
                               "tooltip", _("Move across visited pages"),
                               NULL);
        g_signal_connect (action, "activate_link",
@@ -4978,17 +4980,17 @@ image_save_dialog_response_cb (GtkWidget *fc,
                               gint       response_id,
                               EvWindow  *ev_window)
 {
                               gint       response_id,
                               EvWindow  *ev_window)
 {
-       GnomeVFSURI  *target_uri;
-       gboolean      is_local;
-       GError       *error = NULL;
-
-       gchar        *uri;
-       gchar        *uri_extension;
-       gchar        **extensions;
-       gchar        *filename;
-       gchar        *file_format;
-       GdkPixbufFormatformat;
-       GtkFileFilter *filter;
+       GnomeVFSURI     *target_uri;
+       gboolean         is_local;
+       GError          *error = NULL;
+       GdkPixbuf       *pixbuf;
+       gchar           *uri;
+       gchar           *uri_extension;
+       gchar          **extensions;
+       gchar           *filename;
+       gchar           *file_format;
+       GdkPixbufFormat *format;
+       GtkFileFilter   *filter;
        
        if (response_id != GTK_RESPONSE_OK) {
                gtk_widget_destroy (fc);
        
        if (response_id != GTK_RESPONSE_OK) {
                gtk_widget_destroy (fc);
@@ -5029,9 +5031,14 @@ image_save_dialog_response_cb (GtkWidget *fc,
        
        g_free (uri);
        g_free (uri_extension);
        
        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 ();
        
        
-       gdk_pixbuf_save (ev_image_get_pixbuf (ev_window->priv->image),
-                        filename, file_format, &error, NULL);
+       gdk_pixbuf_save (pixbuf, filename, file_format, &error, NULL);
+       g_object_unref (pixbuf);
        
        if (error) {
                ev_window_error_message (GTK_WINDOW (ev_window),
        
        if (error) {
                ev_window_error_message (GTK_WINDOW (ev_window),
@@ -5094,14 +5101,20 @@ static void
 ev_view_popup_cmd_copy_image (GtkAction *action, EvWindow *window)
 {
        GtkClipboard *clipboard;
 ev_view_popup_cmd_copy_image (GtkAction *action, EvWindow *window)
 {
        GtkClipboard *clipboard;
+       GdkPixbuf    *pixbuf;
 
        if (!window->priv->image)
                return;
        
        clipboard = gtk_widget_get_clipboard (GTK_WIDGET (window),
                                              GDK_SELECTION_CLIPBOARD);
 
        if (!window->priv->image)
                return;
        
        clipboard = gtk_widget_get_clipboard (GTK_WIDGET (window),
                                              GDK_SELECTION_CLIPBOARD);
-       gtk_clipboard_set_image (clipboard,
-                                ev_image_get_pixbuf (window->priv->image));
+       ev_document_doc_mutex_lock ();
+       pixbuf = ev_document_images_get_image (EV_DOCUMENT_IMAGES (window->priv->document),
+                                              window->priv->image);
+       ev_document_doc_mutex_unlock ();
+       
+       gtk_clipboard_set_image (clipboard, pixbuf);
+       g_object_unref (pixbuf);
 }
 
 static void
 }
 
 static void