From b461ca43a65f51dfd89bcb837ac6953a60a82d21 Mon Sep 17 00:00:00 2001 From: raveit65 Date: Sun, 5 Mar 2017 16:06:08 +0100 Subject: a11y: Do not use AtkFactory to create the EvViewAccessible https://bugzilla.gnome.org/show_bug.cgi?id=685828 taken from: https://git.gnome.org/browse/evince/commit/?id=37c58de --- libview/ev-view.c | 58 +++++++++++-------------------------------------------- 1 file changed, 11 insertions(+), 47 deletions(-) (limited to 'libview/ev-view.c') diff --git a/libview/ev-view.c b/libview/ev-view.c index b360b22d..5195299f 100644 --- a/libview/ev-view.c +++ b/libview/ev-view.c @@ -4629,6 +4629,8 @@ ev_view_dispose (GObject *object) view->loading_timeout = 0; } + g_clear_object(&view->accessible); + G_OBJECT_CLASS (ev_view_parent_class)->dispose (object); } @@ -4691,50 +4693,14 @@ ev_view_set_property (GObject *object, } /* Accessibility */ -static void -ev_view_init_accessibility (EvView *view) -{ - static gboolean first_time = TRUE; - - if (first_time) { - AtkObjectFactory *factory; - AtkRegistry *registry; - GType derived_type; - GType derived_atk_type; - - /* - * Figure out whether accessibility is enabled by looking at the - * type of the accessible object which would be created for - * the parent type of EvView. - */ - derived_type = g_type_parent (EV_TYPE_VIEW); - - registry = atk_get_default_registry (); - 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, - EV_TYPE_VIEW, - ev_view_accessible_factory_get_type ()); - view->a11y_enabled = TRUE; - } - first_time = FALSE; - } -} - static AtkObject * ev_view_get_accessible (GtkWidget *widget) { - ev_view_init_accessibility (EV_VIEW (widget)); - return GTK_WIDGET_CLASS (ev_view_parent_class)->get_accessible (widget); -} + EvView *view = EV_VIEW (widget); -static gboolean -ev_view_is_a11y_enabled (EvView *view) -{ - ev_view_init_accessibility (view); - return view->a11y_enabled; + if (!view->accessible) + view->accessible = ev_view_accessible_new (widget); + return view->accessible; } /* GtkContainer */ @@ -5091,14 +5057,12 @@ 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 (ev_view_is_a11y_enabled (view)) { - 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); - } + ev_page_cache_set_flags (view->page_cache, + ev_page_cache_get_flags (view->page_cache) | + 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); -- cgit v1.2.1