diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2005-09-19 14:34:15 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@src.gnome.org> | 2005-09-19 14:34:15 (GMT) |
commit | b9aef17e3af39e3b9364a3e2a8d7fa56d735fc4c (patch) | |
tree | 4441760956b0557be853cc36bf89072ff0a05b85 /shell | |
parent | 8469ab1bef22b59caa4c69293d8c42e2dd7ad6c6 (diff) |
Implement FIT and FITH links
2005-09-19 Marco Pesenti Gritti <mpg@redhat.com>
* backend/ev-link.c: (ev_link_type_get_type),
(ev_link_new_page_xyz), (ev_link_new_page_fit),
(ev_link_new_page_fith):
* backend/ev-link.h:
* pdf/ev-poppler.cc:
* shell/ev-view.c: (goto_fith_link), (ev_view_goto_link):
Implement FIT and FITH links
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ev-view.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/shell/ev-view.c b/shell/ev-view.c index 7826694..fa2df5b 100644 --- a/shell/ev-view.c +++ b/shell/ev-view.c @@ -1097,6 +1097,25 @@ get_link_at_location (EvView *view, } static void +goto_fith_link (EvView *view, EvLink *link) +{ + GdkPoint view_point; + EvPoint doc_point; + int height, page; + + page = ev_link_get_page (link); + ev_page_cache_get_size (view->page_cache, page, 0, 1.0, NULL, &height); + + ev_view_set_sizing_mode (view, EV_SIZING_BEST_FIT); + + doc_point.x = 0; + doc_point.y = height - ev_link_get_top (link); + doc_point_to_view_point (view, page, &doc_point, &view_point); + + gtk_adjustment_set_value (view->vadjustment, view_point.y); +} + +static void goto_xyz_link (EvView *view, EvLink *link) { GdkPoint view_point; @@ -1137,6 +1156,14 @@ ev_view_goto_link (EvView *view, EvLink *link) page = ev_link_get_page (link); ev_page_cache_set_current_page (view->page_cache, page); break; + case EV_LINK_TYPE_PAGE_FIT: + page = ev_link_get_page (link); + ev_page_cache_set_current_page (view->page_cache, page); + ev_view_set_sizing_mode (view, EV_SIZING_BEST_FIT); + break; + case EV_LINK_TYPE_PAGE_FITH: + goto_fith_link (view, link); + break; case EV_LINK_TYPE_PAGE_XYZ: goto_xyz_link (view, link); break; |