GNOME Bugzilla – Bug 642597
Make AtkObject an interface
Last modified: 2021-06-10 11:27:24 UTC
During this thread  some people started to discuss how to improve the current atk implementation on gtk (gail), mostly about how to improve the atk-gtk integration in order to make cleaner and improve the performance of this implementation.
Although having a different hierarchy is still desired , as Dan Winship mentioned , it is not strictly necessary to have a AtkObject as an object, an the interface option is still viable. Matthias Clasen also stated that having the option of AtkObject as a interface could be good for simple objects.
This is a big API change, and we need to study if it really worth. But at least it would be good to discuss it.
Created the bug to be included on the "ATK 2.0" discussion.
After a brief talk with tbsaunde on the IRC chat and related to this bug, some comments.
* This would allow to have just one object instead of two (base object + accessible object)
* But would only solve that for gobject based toolkits, but not on others based on C or C++.
* tbsaunde would like to have atkgobject without being a gobject
Unless we found a way to use and extent gobject interfaces without using a gobject implementing it.
Some parts from this conversation.
<tbsaunde> API: if atk where just an api the gecko c++ object could just have an area of functions that are the functions atk uses
<API> tbsaunde, well this is basically how it works on any toolkit
<API> gtk and gail is similar
<tbsaunde> API: so, iven a gecko object if I want the identifier to hand to atk for this object I can to something like (atk*)(geckoobj+ATK_IFACE_OFFSET)
<tbsaunde> API: ok, in gecko atleast I'd prefer to have them be the same I *think* since then we wouldn't have a wrapper for the generic accessible and the atkobject
<API> tbsaunde, well, first you would require to convince me that it is better to have one object instead of two ;)
<API> although I guess that the conclusion is that "it would depend on the case"
<tbsaunde> API: yeah, certianly in some cases you want two objects
<tbsaunde> API: but if you don't need two objects how can they be good? they take up more space, you have to call between them, so virtual methods so slow and you have to allocate and deallocate which are slow
<tbsaunde> API: why would you need two objects on non gobject toolkits?
<API> unless we get a way to use gobject interfaces on a "plain C" object
<API> tbsaunde, that bug is about moving atkgobject from a object to a gobject interface
<API> right now
<API> I don't know if you can use (extend and implement) a gobject interface without a gobject
* tbsaunde doesn't know how gobject interfaces work but was proposing more abi than interface, or maybe some system of registering functions
<tbsaunde> API: ok, so I was considering movingto more of an abi something like this
<tbsaunde> foo points to an atk implementor then foo() is atk_object_name() and (foo+1)() is atk_object_description() (foo+2)() is atk_object_state()
ATK 2011 Hackfest conclusion:
* Became AtkObject an interface seems the way to go
* Although this is obviously an ATK 2.0 thing
* About the comments of Trevor about that doesn't solve the requirement to have two accessibility object on a non-gobject toolkit, any other options seems something similar to an hack and somewhat uglier
[Mass-reassigning open atk bug reports for better trackability as requested in https://bugzilla.gnome.org/show_bug.cgi?id=653179 .
If you have watched the previous assignee of this bug report as a workaround for actually getting notified of changes in atk bugs, you yourself will now have to add email@example.com to your watchlist at the bottom of https://bugzilla.gnome.org/userprefs.cgi?tab=email to keep watching atk bug reports in GNOME Bugzilla.
Sorry for the noise: Feel free to filter for this comment in order to mass-delete the triggered bugmail.]
GNOME is going to shut down bugzilla.gnome.org in favor of gitlab.gnome.org.
As part of that, we are mass-closing older open tickets in bugzilla.gnome.org
which have not seen updates for a longer time (resources are unfortunately
quite limited so not every ticket can get handled).
If you can still reproduce the situation described in this ticket in a recent
and supported software version of atk, then please follow
and create a ticket at
Thank you for your understanding and your help.