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