diff options
author | Joanmarie Diggs <[email protected]> | 2014-04-22 07:54:23 -0400 |
---|---|---|
committer | raveit65 <[email protected]> | 2017-11-27 10:13:51 +0100 |
commit | e2326c25e1249cf921dd1b878c42d6b51b032bcf (patch) | |
tree | a3a4b8070c69180091532f4150030361d7ed301a /libview/ev-page-accessible.c | |
parent | e6672a875c89cfd81d4e54ae8b1a8a834eb6fe8b (diff) | |
download | atril-e2326c25e1249cf921dd1b878c42d6b51b032bcf.tar.bz2 atril-e2326c25e1249cf921dd1b878c42d6b51b032bcf.tar.xz |
libview: Implement AtkComponent for pages
https://bugzilla.gnome.org/show_bug.cgi?id=728673
origin commit:
https://git.gnome.org/browse/evince/commit/?h=gnome-3-14&id=7d1bf5a
Diffstat (limited to 'libview/ev-page-accessible.c')
-rw-r--r-- | libview/ev-page-accessible.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/libview/ev-page-accessible.c b/libview/ev-page-accessible.c index 2fcc0680..99e970a1 100644 --- a/libview/ev-page-accessible.c +++ b/libview/ev-page-accessible.c @@ -40,10 +40,12 @@ enum { PROP_PAGE, }; +static void ev_page_accessible_component_iface_init (AtkComponentIface *iface); static void ev_page_accessible_hypertext_iface_init (AtkHypertextIface *iface); static void ev_page_accessible_text_iface_init (AtkTextIface *iface); G_DEFINE_TYPE_WITH_CODE (EvPageAccessible, ev_page_accessible, ATK_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, ev_page_accessible_component_iface_init) G_IMPLEMENT_INTERFACE (ATK_TYPE_HYPERTEXT, ev_page_accessible_hypertext_iface_init) G_IMPLEMENT_INTERFACE (ATK_TYPE_TEXT, ev_page_accessible_text_iface_init)) @@ -1054,6 +1056,42 @@ ev_page_accessible_hypertext_iface_init (AtkHypertextIface *iface) iface->get_link_index = ev_page_accessible_get_link_index; } +static void +ev_page_accessible_get_extents (AtkComponent *atk_component, + gint *x, + gint *y, + gint *width, + gint *height, + AtkCoordType coord_type) +{ + EvPageAccessible *self; + EvView *view; + GdkRectangle page_area; + GtkBorder border; + EvRectangle doc_rect, atk_rect; + + self = EV_PAGE_ACCESSIBLE (atk_component); + view = ev_page_accessible_get_view (self); + ev_view_get_page_extents (view, self->priv->page, &page_area, &border); + + doc_rect.x1 = page_area.x; + doc_rect.y1 = page_area.y; + doc_rect.x2 = page_area.x + page_area.width; + doc_rect.y2 = page_area.y + page_area.height; + _transform_doc_rect_to_atk_rect (self->priv->view_accessible, self->priv->page, &doc_rect, &atk_rect, coord_type); + + *x = atk_rect.x1; + *y = atk_rect.y1; + *width = atk_rect.x2 - atk_rect.x1; + *height = atk_rect.y2 - atk_rect.y1; +} + +static void +ev_page_accessible_component_iface_init (AtkComponentIface *iface) +{ + iface->get_extents = ev_page_accessible_get_extents; +} + EvPageAccessible * ev_page_accessible_new (EvViewAccessible *view_accessible, gint page) |