Inicializadores de classe/instância
- Guia de accessibilidade para desenvolvedores GNOME
- O que é acessibilidade?
- Exemplos que usam a API de acessibilidade
- Implementando um objeto ATK
Você precisará configurar um inicializador de classe para o GObject se sua implementação AtkObject:
-
Redefine quaisquer chamadas de função definidas pelo pai do objeto. Isso geralmente é necessário quando um objeto precisa implementar uma função como atk_object_get_n_accessible_children(). Isso é necessário se o objeto possui um filho, mas eles não são representados com widgets.
-
Requires a parent->init, parent->notify_gtk, or parent->finalize function.
-
parent->init
Uma função parent->init() pode ser necessária se a implementação ATK precisar sfazer uma das duas coisas:
- Fazer cache de quaisquer dados obtidos do widget GTK backup.
- Ouve quaisquer sinais do widget GTK backup.
-
parent->notify_gtk
Se a implementação ATK precisa ouvir a quaisquer notificações de propriedade no objeto GTK backup, uma função parent->notify_gtk() pode ser necessário. Por exemplo:
Example 1-7 Uma função notify_gtk() personalizadavoid myatkimp_mytype_real_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkWidget *widget = GTK_WIDGET (obj); AtkObject* atk_obj = gtk_widget_get_accessible (widget); if (strcmp (pspec->name, "property-of-interest") == 0) { /* Lida com a alteração de propósito. */ } else { parent_class->notify_gtk (obj, pspec); } }
-
parent->finalize
Se for necessário liberar quaisquer dados quando uma instância GObject é destruída, então uma função finalize() é necessária para liberar a memória. Por exemplo:
Example 1-8 Uma função finalize() personalizadavoid myatkimp_mytype_finalize (GObject *object) { MyAtkimpMyType *my_type = MYATKIMP_MYTYPE (object); g_object_unref (my_type->cached_value); G_OBJECT_CLASS (parent_class)->finalize (object); }
-