X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-view.c;h=51c7bb2085fdee38221b32ebb68f3d18d336d241;hb=a92004b77fc73fe7ac2a781b5207249b2288b8c9;hp=a5fc7ce636a351d9f9bd6420cd724be0e706ddf2;hpb=bebd9ceae1ec88ddee03bda8c7572c9cb06f6b77;p=evince.git diff --git a/shell/ev-view.c b/shell/ev-view.c index a5fc7ce6..51c7bb20 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -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),