X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk%2Fatksocket.c;h=fd2e6aa913133cf79d87365c8e77c7fdff97a648;hb=d94f08ad5f878747f56b637ad2110f3f125517ad;hp=4fac8bef12668d7e440f4206a22f027713bf55fa;hpb=86c9c7f27de046049620ab8ebcbfc713d02da38a;p=platform%2Fupstream%2Fatk.git diff --git a/atk/atksocket.c b/atk/atksocket.c index 4fac8be..fd2e6aa 100644 --- a/atk/atksocket.c +++ b/atk/atksocket.c @@ -20,9 +20,43 @@ #include "atk.h" #include "atksocket.h" -G_DEFINE_TYPE (AtkSocket, atk_socket, ATK_TYPE_OBJECT); +/** + * SECTION:atksocket + * @Short_description: Container for AtkPlug objects from other processes + * @Title: AtkSocket + * @See_also: #AtkPlug + * + * Together with #AtkPlug, #AtkSocket provides the ability to embed + * accessibles from one process into another in a fashion that is + * transparent to assistive technologies. #AtkSocket works as the + * container of #AtkPlug, embedding it using the method + * atk_socket_embed(). Any accessible contained in the #AtkPlug will + * appear to the assistive technologies as being inside the + * application that created the #AtkSocket. + * + * The communication between a #AtkSocket and a #AtkPlug is done by + * the IPC layer of the accessibility framework, normally implemented + * by the D-Bus based implementation of AT-SPI (at-spi2). If that is + * the case, at-spi-atk2 is the responsible to implement the abstract + * methods atk_plug_get_id() and atk_socket_embed(), so an ATK + * implementor shouldn't reimplement them. The process that contains + * the #AtkPlug is responsible to send the ID returned by + * atk_plug_id() to the process that contains the #AtkSocket, so it + * could call the method atk_socket_embed() in order to embed it. + * + * For the same reasons, an implementor doesn't need to implement + * atk_object_get_n_accessible_children() and + * atk_object_ref_accessible_child(). All the logic related to those + * functions will be implemented by the IPC layer. + */ static void atk_socket_class_init (AtkSocketClass *klass); +static void atk_socket_finalize (GObject *obj); + +static void atk_component_interface_init (AtkComponentIface *iface); + +G_DEFINE_TYPE_WITH_CODE (AtkSocket, atk_socket, ATK_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (ATK_TYPE_COMPONENT, atk_component_interface_init)) static void atk_socket_init (AtkSocket* obj) @@ -33,9 +67,28 @@ atk_socket_init (AtkSocket* obj) static void atk_socket_class_init (AtkSocketClass* klass) { + GObjectClass *obj_class = G_OBJECT_CLASS (klass); + + obj_class->finalize = atk_socket_finalize; + klass->embed = NULL; } +static void +atk_socket_finalize (GObject *_obj) +{ + AtkSocket *obj = ATK_SOCKET (_obj); + + g_free (obj->embedded_plug_id); + obj->embedded_plug_id = NULL; + + G_OBJECT_CLASS (atk_socket_parent_class)->finalize (_obj); +} + +static void atk_component_interface_init (AtkComponentIface *iface) +{ +} + AtkObject* atk_socket_new (void) { @@ -55,8 +108,18 @@ atk_socket_new (void) * @obj: an #AtkSocket * @plug_id: the ID of an #AtkPlug * - * Embeds the children of an #AtkPlug as the children of the #AtkSocket. The - * plug may be in the same process or in a different process. + * Embeds the children of an #AtkPlug as the children of the + * #AtkSocket. The plug may be in the same process or in a different + * process. + * + * The class item used by this function should be filled in by the IPC + * layer (usually at-spi2-atk). The implementor of the AtkSocket + * should call this function and pass the id for the plug as returned + * by atk_plug_get_id(). It is the responsibility of the application + * to pass the plug id on to the process implementing the #AtkSocket + * as needed. + * + * Since: 1.30 **/ void atk_socket_embed (AtkSocket* obj, gchar* plug_id) @@ -83,6 +146,8 @@ atk_socket_embed (AtkSocket* obj, gchar* plug_id) * Determines whether or not the socket has an embedded plug. * * Returns: TRUE if a plug is embedded in the socket + * + * Since: 1.30 **/ gboolean atk_socket_is_occupied (AtkSocket* obj)