|
-
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);
|