Подробности

[В начало]

Проблема в реализации № S0596

Краткое описание

Тип свойства "accesible-value" в AtkObject не соответствует интерфейсу AtkValue

Подробное описание

В AtkObject свойство "accessible-value" имеет тип gdouble. Функции get/set этого свойства относятся к интерфейсу AtkValue, реализуемого AtkObject'ом.

Однако AtkValue оперирует не с gdouble, а с произвольным GValue, который может содержать не только gdouble, но и gint, и вообще, произвольный тип. Из-за этого при установке/считывании значения свойства возможны ошибки.

В частности, считывание значения свойства "accessible-value" невозможно, если atk_value_get_current_value возвращает GValue с типом, отличным от G_TYPE_DOUBLE (см. пример).

Раздел стандарта

ATK 1.9.0 Reference Manual, AtkObject, AtkValue

Пример

// Implementation of MyAtkValue that inherits AtkObject 
// and implements AtkValue
...
void 
my_atk_value_get_current_value(AtkValue *obj, GValue* value)
{
    g_value_init(value, G_TYPE_INT);
    g_value_set_int(value, 10);
}
...
int 
main()
{
    gdouble current_value = 0;
    MyAtkValue* obj = g_object_new(MY_TYPE_ATK_VALUE, NULL);
    g_object_get(obj, "accessible-value", &value, NULL);
    
    // Now current_value is still 0 
    // because an error has occured when reading the value.

    ...
    return 0;
}

Способы устранения

Тип свойства "accessible-value" изменить с gdouble на GValue, с соответствующим исправлением реализации.

Компонент

gtk-atk 1.9.0 or later

Принято

Gnome Bugzilla 504042

[В начало]