(In reply to Ginn Chen from comment #15)
> I think the solution is
> 1) We implement both getNameCB and setNameCB, make sure setNameCB won't get
> into getNameCB.
makes sense to be on safe side. I'm fine with that.
> Same for parent, role, description, etc.
I'd deal with them in follow ups. Otherwise it might be not a good first bug at all.
> or
> 2) We never call atk_object_set_*(), we use object->xxx = blahblahblah, in
> our code.
API said that object->xxx shouldn't be public (atk_object->accessible).
> However, IMHO,
> atk_object_set_name should just use accessible->name.
It doesn't sound like it's worth to cache accessible name since we always calculate the name on demand (also it's extra strings copy). In gecko we don't fire name_change event for every changed name. So we get hard times to update accessible->name. It sounds all we can do what we do now when we were asked for a name then update accessible->name.
(In reply to Ginn Chen from comment #15)
> I think the solution is
> 1) We implement both getNameCB and setNameCB, make sure setNameCB won't get
> into getNameCB.
makes sense to be on safe side. I'm fine with that.
> Same for parent, role, description, etc.
I'd deal with them in follow ups. Otherwise it might be not a good first bug at all.
> or
> 2) We never call atk_object_set_*(), we use object->xxx = blahblahblah, in
> our code.
API said that object->xxx shouldn't be public (atk_object- >accessible) .
> However, IMHO,
> atk_object_set_name should just use accessible->name.
It doesn't sound like it's worth to cache accessible name since we always calculate the name on demand (also it's extra strings copy). In gecko we don't fire name_change event for every changed name. So we get hard times to update accessible->name. It sounds all we can do what we do now when we were asked for a name then update accessible->name.
So I think we should go with 1)