summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoanmarie Diggs <[email protected]>2014-04-25 01:30:30 -0400
committerraveit65 <[email protected]>2017-11-27 10:13:51 +0100
commit91241a1d27d9763df56ff5c6e868f4c37d65fe8b (patch)
treea19263625c4a24497bfb28a91b013440aa571c93
parente2326c25e1249cf921dd1b878c42d6b51b032bcf (diff)
downloadatril-91241a1d27d9763df56ff5c6e868f4c37d65fe8b.tar.bz2
atril-91241a1d27d9763df56ff5c6e868f4c37d65fe8b.tar.xz
libview: Update ATK_STATE_SHOWING when the visible page range changes
https://bugzilla.gnome.org/show_bug.cgi?id=728664 origin commit: https://git.gnome.org/browse/evince/commit/?h=gnome-3-14&id=110a98a https://git.gnome.org/browse/evince/commit/?h=gnome-3-14&id=c4e98b3
-rw-r--r--libview/ev-view-accessible.c30
-rw-r--r--libview/ev-view-accessible.h3
-rw-r--r--libview/ev-view.c4
3 files changed, 37 insertions, 0 deletions
diff --git a/libview/ev-view-accessible.c b/libview/ev-view-accessible.c
index c063e366..bcff9100 100644
--- a/libview/ev-view-accessible.c
+++ b/libview/ev-view-accessible.c
@@ -61,6 +61,8 @@ struct _EvViewAccessiblePrivate {
GtkScrollType idle_scroll;
gint previous_cursor_page;
+ gint start_page;
+ gint end_page;
GPtrArray *children;
};
@@ -529,3 +531,31 @@ _transform_doc_rect_to_atk_rect (EvViewAccessible *accessible,
atk_rect->x2 = view_rect.x + view_rect.width;
atk_rect->y2 = view_rect.y + view_rect.height;
}
+
+void
+ev_view_accessible_set_page_range (EvViewAccessible *accessible,
+ gint start,
+ gint end)
+{
+ gint i;
+ AtkObject *page;
+
+ g_return_if_fail (EV_IS_VIEW_ACCESSIBLE (accessible));
+
+ for (i = accessible->priv->start_page; i <= accessible->priv->end_page; i++) {
+ if (i < start || i > end) {
+ page = g_ptr_array_index (accessible->priv->children, i);
+ atk_object_notify_state_change (page, ATK_STATE_SHOWING, FALSE);
+ }
+ }
+
+ for (i = start; i <= end; i++) {
+ if (i < accessible->priv->start_page || i > accessible->priv->end_page) {
+ page = g_ptr_array_index (accessible->priv->children, i);
+ atk_object_notify_state_change (page, ATK_STATE_SHOWING, TRUE);
+ }
+ }
+
+ accessible->priv->start_page = start;
+ accessible->priv->end_page = end;
+}
diff --git a/libview/ev-view-accessible.h b/libview/ev-view-accessible.h
index 34369682..b756b554 100644
--- a/libview/ev-view-accessible.h
+++ b/libview/ev-view-accessible.h
@@ -54,6 +54,9 @@ void ev_view_accessible_set_model (EvViewAccessible *accessible,
EvDocumentModel *model);
gint ev_view_accessible_get_n_pages (EvViewAccessible *accessible);
gint ev_view_accessible_get_relevant_page (EvViewAccessible *accessible);
+void ev_view_accessible_set_page_range (EvViewAccessible *accessible,
+ gint start,
+ gint end);
void _transform_doc_rect_to_atk_rect (EvViewAccessible *accessible,
gint page,
EvRectangle *doc_rect,
diff --git a/libview/ev-view.c b/libview/ev-view.c
index 9884280b..a7ae53e0 100644
--- a/libview/ev-view.c
+++ b/libview/ev-view.c
@@ -811,6 +811,10 @@ view_update_range_and_current_page (EvView *view)
MAX(view->start_page - PAGE_CACHE_NUMBER, 0),
MIN(view->end_page + PAGE_CACHE_NUMBER, ev_document_get_n_pages (view->document) - 1),
view->selection_info.selections);
+ if (view->accessible)
+ ev_view_accessible_set_page_range (EV_VIEW_ACCESSIBLE (view->accessible),
+ view->start_page,
+ view->end_page);
if (ev_pixbuf_cache_get_surface (view->pixbuf_cache, view->current_page))
gtk_widget_queue_draw (GTK_WIDGET (view));