Подробности
[В начало]
Проблема в реализации № 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
[В начало]