summaryrefslogtreecommitdiff
path: root/libview/ev-page-accessible.c
diff options
context:
space:
mode:
authorJoanmarie Diggs <[email protected]>2014-04-22 07:54:23 -0400
committerraveit65 <[email protected]>2017-11-27 10:13:51 +0100
commite2326c25e1249cf921dd1b878c42d6b51b032bcf (patch)
treea3a4b8070c69180091532f4150030361d7ed301a /libview/ev-page-accessible.c
parente6672a875c89cfd81d4e54ae8b1a8a834eb6fe8b (diff)
downloadatril-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.c38
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)