]> www.fi.muni.cz Git - evince.git/commitdiff
libview: Make sure a11y is initialized before checking whether it's enabled
authorCarlos Garcia Campos <carlosgc@gnome.org>
Sat, 29 Jan 2011 13:46:49 +0000 (14:46 +0100)
committerCarlos Garcia Campos <carlosgc@gnome.org>
Sat, 29 Jan 2011 13:50:36 +0000 (14:50 +0100)
Spotted by Daniel Garcia, fixes bug #639850.

libview/ev-view.c

index 373a62522e1d445df627c5c74362ef6aabb13096..544a1fee85e5bc9224a90b1df28778decb7764da 100644 (file)
@@ -4626,16 +4626,17 @@ ev_view_set_property (GObject      *object,
        }
 }
 
-static AtkObject *
-ev_view_get_accessible (GtkWidget *widget)
+/* 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; 
+               GType derived_type;
+               GType derived_atk_type;
 
                /*
                 * Figure out whether accessibility is enabled by looking at the
@@ -4652,13 +4653,26 @@ ev_view_get_accessible (GtkWidget *widget)
                        atk_registry_set_factory_type (registry,
                                                       EV_TYPE_VIEW,
                                                       ev_view_accessible_factory_get_type ());
-                       EV_VIEW (widget)->a11y_enabled = TRUE;
+                       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);
 }
 
+static gboolean
+ev_view_is_a11y_enabled (EvView *view)
+{
+       ev_view_init_accessibility (view);
+       return view->a11y_enabled;
+}
+
 static void
 ev_view_class_init (EvViewClass *class)
 {
@@ -4957,7 +4971,7 @@ 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) {
+       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,