]> www.fi.muni.cz Git - evince.git/blobdiff - pixbuf/pixbuf-document.c
Check the links info is initialized before using it. Should fix a crash on
[evince.git] / pixbuf / pixbuf-document.c
index 843df3d267a3da0c9d925d5f9c62a584ee0d9161..65cef92929b2d9a933d9c1964b06e178f2a042b1 100644 (file)
@@ -135,8 +135,10 @@ pixbuf_document_get_page_size (EvDocument   *document,
 {
        PixbufDocument *pixbuf_document = PIXBUF_DOCUMENT (document);
 
-       *width = gdk_pixbuf_get_width (pixbuf_document->pixbuf);
-       *height = gdk_pixbuf_get_height (pixbuf_document->pixbuf);
+       if (width)
+               *width = gdk_pixbuf_get_width (pixbuf_document->pixbuf);
+       if (height)
+               *height = gdk_pixbuf_get_height (pixbuf_document->pixbuf);
 }
 
 static void
@@ -232,10 +234,19 @@ pixbuf_document_class_init (PixbufDocumentClass *klass)
        g_object_class_override_property (gobject_class, PROP_TITLE, "title");
 }
 
+static EvLink *
+pixbuf_document_get_link (EvDocument *document,
+                         int         x,
+                         int         y)
+{
+       return NULL;
+}
+
 static void
 pixbuf_document_document_iface_init (EvDocumentIface *iface)
 {
        iface->load = pixbuf_document_load;
+       iface->get_link = pixbuf_document_get_link;
        iface->get_n_pages = pixbuf_document_get_n_pages;
        iface->set_page = pixbuf_document_set_page;
        iface->get_page = pixbuf_document_get_page;
@@ -266,11 +277,27 @@ pixbuf_document_thumbnails_get_thumbnail (EvDocumentThumbnails   *document,
        return pixbuf;
 }
 
+static void
+pixbuf_document_thumbnails_get_dimensions (EvDocumentThumbnails *document,
+                                          gint                  page,
+                                          gint                  suggested_width,
+                                          gint                  *width,
+                                          gint                  *height)
+{
+       PixbufDocument *pixbuf_document = PIXBUF_DOCUMENT (document);
+       gdouble page_ratio;
+
+       page_ratio = ((double)gdk_pixbuf_get_height (pixbuf_document->pixbuf)) /
+                    gdk_pixbuf_get_width (pixbuf_document->pixbuf);
+       *width = suggested_width;
+       *height = (gint) (suggested_width * page_ratio);
+}
 
 static void
 pixbuf_document_document_thumbnails_iface_init (EvDocumentThumbnailsIface *iface)
 {
        iface->get_thumbnail = pixbuf_document_thumbnails_get_thumbnail;
+       iface->get_dimensions = pixbuf_document_thumbnails_get_dimensions;
 }