diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2005-06-14 21:04:23 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-06-14 21:04:23 (GMT) |
commit | 79986dda7231d1ef1c530909bde8e18a507a2a2a (patch) | |
tree | 4da2836164c375d4fc17c3bc3dfbc67441b2a1b3 /shell/ev-view.c | |
parent | c7d050d9ac60d8711e8dd6369a1991296bde282f (diff) |
Add orientation api. Currently poppler api is not optimal, we need to set
2005-06-14 Marco Pesenti Gritti <mpg@redhat.com>
* backend/ev-document.c: (ev_document_set_orientation):
* backend/ev-document.h:
* pdf/ev-poppler.cc:
Add orientation api. Currently poppler api is not optimal,
we need to set orientation every time we _get a page
* data/evince-ui.xml:
* shell/ev-window.c: (ev_window_cmd_edit_landscape),
(ev_window_cmd_edit_portrait), (ev_window_cmd_edit_flip):
Add orientation menu items
* shell/ev-page-cache.c: (ev_page_cache_clear):
* shell/ev-page-cache.h:
Add api to clear the cache
* shell/ev-view.c: (setup_caches), (clear_caches),
(ev_view_set_document), (ev_view_zoom_out),
(ev_view_set_orientation):
* shell/ev-view.h:
Implement orientation changing
Diffstat (limited to 'shell/ev-view.c')
-rw-r--r-- | shell/ev-view.c | 45 |
1 files changed, 37 insertions, 8 deletions
diff --git a/shell/ev-view.c b/shell/ev-view.c index ff05be2..3e31d29 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -1899,6 +1899,28 @@ ev_view_new (void) return view; } +static void +setup_caches (EvView *view) +{ + view->page_cache = ev_page_cache_get (view->document); + g_signal_connect (view->page_cache, "page-changed", G_CALLBACK (page_changed_cb), view); + view->pixbuf_cache = ev_pixbuf_cache_new (view->document); + g_signal_connect (view->pixbuf_cache, "job-finished", G_CALLBACK (job_finished_cb), view); +} + +static void +clear_caches (EvView *view) +{ + if (view->pixbuf_cache) { + g_object_unref (view->pixbuf_cache); + view->pixbuf_cache = NULL; + } + + if (view->document) { + ev_page_cache_clear (view->document); + } +} + void ev_view_set_document (EvView *view, EvDocument *document) @@ -1915,10 +1937,7 @@ ev_view_set_document (EvView *view, } - if (view->pixbuf_cache) { - g_object_unref (view->pixbuf_cache); - view->pixbuf_cache = NULL; - } + clear_caches (view); view->document = document; view->find_page = 0; @@ -1932,10 +1951,8 @@ ev_view_set_document (EvView *view, G_CALLBACK (find_changed_cb), view); } - view->page_cache = ev_page_cache_get (view->document); - g_signal_connect (view->page_cache, "page-changed", G_CALLBACK (page_changed_cb), view); - view->pixbuf_cache = ev_pixbuf_cache_new (view->document); - g_signal_connect (view->pixbuf_cache, "job-finished", G_CALLBACK (job_finished_cb), view); + + setup_caches (view); } gtk_widget_queue_resize (GTK_WIDGET (view)); @@ -2125,6 +2142,18 @@ ev_view_zoom_out (EvView *view) ev_view_set_zoom (view, ZOOM_OUT_FACTOR, TRUE); } +void +ev_view_set_orientation (EvView *view, + EvOrientation orientation) +{ + ev_document_set_orientation (view->document, orientation); + + clear_caches (view); + setup_caches (view); + + gtk_widget_queue_resize (GTK_WIDGET (view)); +} + static double zoom_for_size_fit_width (int doc_width, int doc_height, |