summaryrefslogtreecommitdiff
path: root/atk-adaptor/accessible-register.c
diff options
context:
space:
mode:
authorMark Doffman <mark.doffman@codethink.co.uk>2010-01-21 06:13:27 -0800
committerMark Doffman <mark.doffman@codethink.co.uk>2010-01-21 15:20:04 -0800
commit0a9e49531331b8efdc727e07f4340fea1573465e (patch)
treedec3cea6fd71ea2bcad617dbcbd552423fef54bb /atk-adaptor/accessible-register.c
parentb149f6ecf0651927a33cc3e4e4a95e886e60fd21 (diff)
downloadat-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.c28
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------------------------------------------------------------------------*/