X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=atk-adaptor%2Faccessible-register.c;h=99d98f3376ecbf6b6cfcc8513fb8ea49a1c0f3b2;hb=f6a0fdcf50c5bcbab547996313161ee4200266e4;hp=ac93dee69570bb1fd2837ecae4b479697fac40af;hpb=5713a8e46559b6de9fbf5fc3e073d0d482d8c7e1;p=platform%2Fcore%2Fuifw%2Fat-spi2-atk.git diff --git a/atk-adaptor/accessible-register.c b/atk-adaptor/accessible-register.c index ac93dee..99d98f3 100644 --- a/atk-adaptor/accessible-register.c +++ b/atk-adaptor/accessible-register.c @@ -47,16 +47,18 @@ * */ -#define SPI_ATK_PATH_PREFIX_LENGTH 22 -#define SPI_ATK_OBJECT_PATH_PREFIX "/org/at_spi/accessible" -#define SPI_ATK_OBJECT_PATH_DESKTOP SPI_ATK_OBJECT_PATH_PREFIX "/desktop" +#define SPI_ATK_PATH_PREFIX_LENGTH 27 +#define SPI_ATK_OBJECT_PATH_PREFIX "/org/a11y/atspi/accessible/" +#define SPI_ATK_OBJECT_PATH_ROOT "root" -#define SPI_ATK_OBJECT_REFERENCE_TEMPLATE SPI_ATK_OBJECT_PATH_PREFIX "/%d" +#define SPI_ATK_OBJECT_REFERENCE_TEMPLATE SPI_ATK_OBJECT_PATH_PREFIX "%d" #define SPI_DBUS_ID "spi-dbus-id" SpiRegister *spi_global_register = NULL; +static const gchar * spi_register_root_path = SPI_ATK_OBJECT_PATH_PREFIX SPI_ATK_OBJECT_PATH_ROOT; + enum { OBJECT_REGISTERED, @@ -198,6 +200,10 @@ deregister_object (gpointer data, GObject * gobj) 0, gobj); g_hash_table_remove (reg->ref2ptr, GINT_TO_POINTER (ref)); + +#ifdef SPI_ATK_DEBUG + g_debug ("DEREG - %d", ref); +#endif } } @@ -213,6 +219,10 @@ register_object (SpiRegister * reg, GObject * gobj) g_object_set_data (G_OBJECT (gobj), SPI_DBUS_ID, GINT_TO_POINTER (ref)); g_object_weak_ref (G_OBJECT (gobj), deregister_object, reg); +#ifdef SPI_ATK_DEBUG + g_debug ("REG - %d", ref); +#endif + g_signal_emit (reg, register_signals [OBJECT_REGISTERED], 0, gobj); } @@ -235,14 +245,12 @@ spi_register_path_to_object (SpiRegister * reg, const char *path) != 0) return NULL; - path += SPI_ATK_PATH_PREFIX_LENGTH; /* Skip over the prefix */ + path += SPI_ATK_PATH_PREFIX_LENGTH; /* Skip over the prefix */ - if (!g_strcmp0 (SPI_ATK_OBJECT_PATH_DESKTOP, path)) - return G_OBJECT (atk_get_root ()); - if (path[0] != '/') - return NULL; + /* Map the root path to the root object. */ + if (!g_strcmp0 (SPI_ATK_OBJECT_PATH_ROOT, path)) + return G_OBJECT (spi_global_app_data->root); - path++; index = atoi (path); data = g_hash_table_lookup (reg->ref2ptr, GINT_TO_POINTER (index)); if (data) @@ -268,6 +276,13 @@ spi_register_object_to_path (SpiRegister * reg, GObject * gobj) { guint ref; + if (gobj == NULL) + return NULL; + + /* Map the root object to the root path. */ + if ((void *)gobj == (void *)spi_global_app_data->root) + return g_strdup (spi_register_root_path); + ref = object_to_ref (gobj); if (!ref) { @@ -293,9 +308,9 @@ spi_register_object_to_ref (GObject * gobj) * within any particular application. */ gchar * -spi_register_desktop_object_path () +spi_register_root_object_path () { - return g_strdup (SPI_ATK_OBJECT_PATH_PREFIX SPI_ATK_OBJECT_PATH_DESKTOP); + return g_strdup (SPI_ATK_OBJECT_PATH_PREFIX SPI_ATK_OBJECT_PATH_ROOT); } /*END------------------------------------------------------------------------*/