]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-view.c
Add warnings about unimplemented/unknown link types.
[evince.git] / shell / ev-view.c
index a5fc7ce636a351d9f9bd6420cd724be0e706ddf2..51c7bb2085fdee38221b32ebb68f3d18d336d241 100644 (file)
@@ -29,6 +29,7 @@
 #include "ev-marshal.h"
 #include "ev-view.h"
 #include "ev-document-find.h"
+#include "ev-debug.h"
 
 #define EV_VIEW_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EV_TYPE_VIEW, EvViewClass))
 #define EV_IS_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EV_TYPE_VIEW))
@@ -182,6 +183,8 @@ ev_view_finalize (GObject *object)
 {
        EvView *view = EV_VIEW (object);
 
+       LOG ("Finalize")
+
        if (view->document)
                g_object_unref (view->document);
 
@@ -408,6 +411,9 @@ expose_bin_window (GtkWidget      *widget,
                                     x_offset + 1,
                                     y_offset + 1);
 
+       LOG ("Render area %d %d %d %d", event->area.x, event->area.y,
+             event->area.width, event->area.height)
+
        ev_document_render (view->document,
                            event->area.x, event->area.y,
                            event->area.width, event->area.height);
@@ -944,8 +950,14 @@ update_find_status_message (EvView *view)
 }
 
 static void
-set_document_page (EvView *view, int page)
+set_document_page (EvView *view, int new_page)
 {
+       int page;
+       int pages;
+
+       pages = ev_document_get_n_pages (view->document);
+       page = CLAMP (new_page, 1, pages);
+
        if (view->document) {
                int old_page = ev_document_get_page (view->document);
                int old_width, old_height;
@@ -977,7 +989,10 @@ set_document_page (EvView *view, int page)
 
                view->find_page = page;
                view->find_result = 0;
-               update_find_status_message (view);
+
+               if (EV_IS_DOCUMENT_FIND (view->document)) {
+                       update_find_status_message (view);
+               }
        }
 }
 
@@ -1018,11 +1033,17 @@ ensure_rectangle_is_visible (EvView *view, GdkRectangle *rect)
 static void
 jump_to_find_result (EvView *view)
 {
+       EvDocumentFind *find = EV_DOCUMENT_FIND (view->document);
        GdkRectangle rect;
+       int n_results;
+
+       n_results = ev_document_find_get_n_results (find);
 
-       ev_document_find_get_result (EV_DOCUMENT_FIND (view->document),
-                                    view->find_result, &rect);
-       ensure_rectangle_is_visible (view, &rect);
+       if (n_results > view->find_result) {
+               ev_document_find_get_result
+                       (find, view->find_result, &rect);
+               ensure_rectangle_is_visible (view, &rect);
+       }
 }
 
 static void
@@ -1090,9 +1111,8 @@ ev_view_set_document (EvView     *view,
 
        if (document != view->document) {
                if (view->document) {
-                        g_signal_handlers_disconnect_by_func (view->document,
-                                                              find_changed_cb,
-                                                              view);
+                        g_signal_handlers_disconnect_by_func
+                               (view->document, find_changed_cb, view);
                        g_object_unref (view->document);
                 }
 
@@ -1102,11 +1122,12 @@ ev_view_set_document (EvView     *view,
 
                if (view->document) {
                        g_object_ref (view->document);
-                       if (EV_IS_DOCUMENT_FIND (view->document))
+                       if (EV_IS_DOCUMENT_FIND (view->document)) {
                                g_signal_connect (view->document,
                                                  "find_changed",
                                                  G_CALLBACK (find_changed_cb),
                                                  view);
+                       }
                        g_signal_connect (view->document,
                                          "changed",
                                          G_CALLBACK (document_changed_callback),