Small GNOME foot in banner [Making Applications Accessible]
back next

Anonymous (run-time) Inheritance from GAIL

  • override get_accessible to register your new factory on-demand
  • get a reference to your parent type's accessible type to see if accessibility is enabled already
  • 	      
      static gboolean first_time = TRUE;
      AtkRegistry *registry;
      AtkObjectFactory *factory;  
      GType derived_type;
      GType derived_atk_type;
    
      if (first_time)
        {
          /* Determine whether accessibility is enabled by checking accessible
    	 created for parent */
    
          registry = atk_get_default_registry ();
          derived_type = g_type_parent (ZVT_TYPE_TERM);
          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,
    					 ZVT_TYPE_TERM, ZVT_TYPE_ACCESSIBLE_FACTORY);
    	}
          first_time = FALSE;
        }
      return GTK_WIDGET_CLASS(parent_class)->get_accessible (widget);
    
st