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-view-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-view-accessible.c')
-rw-r--r-- | libview/ev-view-accessible.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/libview/ev-view-accessible.c b/libview/ev-view-accessible.c index 2932c5e1..c063e366 100644 --- a/libview/ev-view-accessible.c +++ b/libview/ev-view-accessible.c @@ -493,3 +493,39 @@ ev_view_accessible_get_relevant_page (EvViewAccessible *accessible) return get_relevant_page (view); } + +void +_transform_doc_rect_to_atk_rect (EvViewAccessible *accessible, + gint page, + EvRectangle *doc_rect, + EvRectangle *atk_rect, + AtkCoordType coord_type) +{ + EvView *view; + GdkRectangle view_rect; + GtkWidget *widget, *toplevel; + gint x_widget, y_widget; + + view = EV_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible))); + _ev_view_transform_doc_rect_to_view_rect (view, page, doc_rect, &view_rect); + view_rect.x -= view->scroll_x; + view_rect.y -= view->scroll_y; + + widget = GTK_WIDGET (view); + toplevel = gtk_widget_get_toplevel (widget); + gtk_widget_translate_coordinates (widget, toplevel, 0, 0, &x_widget, &y_widget); + view_rect.x += x_widget; + view_rect.y += y_widget; + + if (coord_type == ATK_XY_SCREEN) { + gint x_window, y_window; + gdk_window_get_origin (gtk_widget_get_window (toplevel), &x_window, &y_window); + view_rect.x += x_window; + view_rect.y += y_window; + } + + atk_rect->x1 = view_rect.x; + atk_rect->y1 = view_rect.y; + atk_rect->x2 = view_rect.x + view_rect.width; + atk_rect->y2 = view_rect.y + view_rect.height; +} |