From: Carlos Garcia Campos Date: Wed, 14 Jul 2010 13:28:15 +0000 (+0200) Subject: [libview] Only set text and text_layout flags in page cache when a11y might be enabled X-Git-Tag: EVINCE_2_31_6~48 X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=commitdiff_plain;h=9d70081e79a63d1189d2497dbafaac3c48b1a581;p=evince.git [libview] Only set text and text_layout flags in page cache when a11y might be enabled --- diff --git a/libview/ev-view-private.h b/libview/ev-view-private.h index 06309082..57eea303 100644 --- a/libview/ev-view-private.h +++ b/libview/ev-view-private.h @@ -188,6 +188,9 @@ struct _EvView { /* Synctex */ EvMapping *synctex_result; + + /* Accessibility */ + gboolean a11y_enabled; }; struct _EvViewClass { diff --git a/libview/ev-view.c b/libview/ev-view.c index e024fb9f..d5f2a71c 100644 --- a/libview/ev-view.c +++ b/libview/ev-view.c @@ -4408,10 +4408,12 @@ ev_view_get_accessible (GtkWidget *widget) factory = atk_registry_get_factory (registry, derived_type); derived_atk_type = atk_object_factory_get_accessible_type (factory); - if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE)) - atk_registry_set_factory_type (registry, + if (g_type_is_a (derived_atk_type, GTK_TYPE_ACCESSIBLE)) { + atk_registry_set_factory_type (registry, EV_TYPE_VIEW, ev_view_accessible_factory_get_type ()); + EV_VIEW (widget)->a11y_enabled = TRUE; + } first_time = FALSE; } return GTK_WIDGET_CLASS (ev_view_parent_class)->get_accessible (widget); @@ -4691,6 +4693,14 @@ setup_caches (EvView *view) view->height_to_page_cache = ev_view_get_height_to_page_cache (view); view->pixbuf_cache = ev_pixbuf_cache_new (GTK_WIDGET (view), view->model, view->pixbuf_cache_size); view->page_cache = ev_page_cache_new (view->document); + if (view->a11y_enabled) { + EvJobPageDataFlags flags = ev_page_cache_get_flags (view->page_cache); + + ev_page_cache_set_flags (view->page_cache, + flags | + EV_PAGE_DATA_INCLUDE_TEXT_LAYOUT | + EV_PAGE_DATA_INCLUDE_TEXT); + } inverted_colors = ev_document_model_get_inverted_colors (view->model); ev_pixbuf_cache_set_inverted_colors (view->pixbuf_cache, inverted_colors); g_signal_connect (view->pixbuf_cache, "job-finished", G_CALLBACK (job_finished_cb), view);