]> www.fi.muni.cz Git - evince.git/blobdiff - ps/ps-document.c
Return a link even if it's of an unrecognized type. Otherwise we go in an
[evince.git] / ps / ps-document.c
index 1f29c761fc4de926e0cb1e580ddd9ad848046323..dea5ddf5ac63743d73ed851efc64bd26fdb1a05c 100644 (file)
@@ -325,12 +325,12 @@ ps_document_get_property (GObject *object,
 }
 
 static void
-ps_document_class_init(PSDocumentClass * klass)
+ps_document_class_init(PSDocumentClass *klass)
 {
   GObjectClass *object_class;
 
   object_class = (GObjectClass *) klass;
-  parent_class = gtk_type_class(gtk_widget_get_type());
+  parent_class = g_type_class_peek_parent (klass);
   gs_class = klass;
 
   object_class->finalize = ps_document_finalize;
@@ -1678,7 +1678,8 @@ ps_document_set_zoom(PSDocument * gs, gfloat zoom)
     set_up_page(gs);
     gs->changed = TRUE;
   }
-
+  
+  gs->scaling = TRUE;
   ps_document_goto_page(gs, gs->current_page);
 }
 
@@ -1695,6 +1696,12 @@ ps_document_load (EvDocument  *document,
                return FALSE;
 
        result = document_load (PS_DOCUMENT (document), filename);
+       if (!result) {
+               g_set_error (error, G_FILE_ERROR,
+                            G_FILE_ERROR_FAILED,
+                            "Failed to load document '%s'\n",
+                            uri);
+       }
 
        g_free (filename);
 
@@ -1728,7 +1735,7 @@ static void
 ps_document_set_page (EvDocument  *document,
                       int          page)
 {
-       ps_document_goto_page (PS_DOCUMENT (document), page);
+       ps_document_goto_page (PS_DOCUMENT (document), page - 1);
 }
 
 static int
@@ -1738,7 +1745,7 @@ ps_document_get_page (EvDocument  *document)
 
        g_return_val_if_fail (ps != NULL, -1);
 
-       return ps->current_page;
+       return ps->current_page + 1;
 }
 
 static gboolean
@@ -1754,7 +1761,13 @@ ps_document_widget_event (GtkWidget *widget, GdkEvent *event, gpointer data)
        if (event->client.message_type == gs_class->page_atom) {
                LOG ("GS rendered the document");
                gs->busy = FALSE;
-               ev_document_changed (EV_DOCUMENT (gs));
+
+               if (gs->scaling) {
+                       ev_document_scale_changed (EV_DOCUMENT (gs));
+                       gs->scaling = FALSE;
+               } else {
+                       ev_document_page_changed (EV_DOCUMENT (gs));
+               }
        }
 
        return TRUE;