diff options
author | Mark Doffman <mark.doffman@codethink.co.uk> | 2010-01-21 06:13:27 -0800 |
---|---|---|
committer | Mark Doffman <mark.doffman@codethink.co.uk> | 2010-01-21 15:20:04 -0800 |
commit | 0a9e49531331b8efdc727e07f4340fea1573465e (patch) | |
tree | dec3cea6fd71ea2bcad617dbcbd552423fef54bb /atk-adaptor/accessible-register.c | |
parent | b149f6ecf0651927a33cc3e4e4a95e886e60fd21 (diff) | |
download | at-spi2-atk-0a9e49531331b8efdc727e07f4340fea1573465e.tar.gz |
Modify the paths scheme.
The null path now signifies no object. A new root path has been
added representing the root accessible for a given connection.
Diffstat (limited to 'atk-adaptor/accessible-register.c')
-rw-r--r-- | atk-adaptor/accessible-register.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/atk-adaptor/accessible-register.c b/atk-adaptor/accessible-register.c index 97ada1d..63942d4 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 34 +#define SPI_ATK_OBJECT_PATH_PREFIX "/org/freedesktop/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, @@ -243,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) @@ -279,6 +279,10 @@ spi_register_object_to_path (SpiRegister * reg, GObject * gobj) if (gobj == NULL) return NULL; + /* Map the root object to the root path. */ + if (gobj == spi_global_app_data->root) + return g_strdup (spi_register_root_path); + ref = object_to_ref (gobj); if (!ref) { @@ -304,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------------------------------------------------------------------------*/ |