Fix for bug 653872 - New ATK Roles
[platform/core/uifw/at-spi2-atk.git] / atk-adaptor / object.c
index 2247467..6795cf7 100644 (file)
@@ -55,8 +55,8 @@
  * This function will simply look for all the accessibles that the cache object
  * has not found and assume that they need to be leased.
  */
-static void
-maybe_lease (GObject *obj)
+void
+spi_object_lease_if_needed (GObject *obj)
 {
   if (!spi_cache_in (spi_global_cache, obj))
     {
@@ -101,7 +101,7 @@ spi_object_append_reference (DBusMessageIter * iter, AtkObject * obj)
     return;
   }
 
-  maybe_lease (G_OBJECT (obj));
+  spi_object_lease_if_needed (G_OBJECT (obj));
 
   name = dbus_bus_get_unique_name (spi_global_app_data->bus);
   path = spi_register_object_to_path (spi_global_register, G_OBJECT (obj));
@@ -132,7 +132,7 @@ spi_hyperlink_append_reference (DBusMessageIter * iter, AtkHyperlink * obj)
     return;
   }
 
-  maybe_lease (G_OBJECT (obj));
+  spi_object_lease_if_needed (G_OBJECT (obj));
 
   name = dbus_bus_get_unique_name (spi_global_app_data->bus);
   path = spi_register_object_to_path (spi_global_register, G_OBJECT (obj));
@@ -186,8 +186,6 @@ spi_object_return_reference (DBusMessage * msg, AtkObject * obj)
       dbus_message_iter_init_append (reply, &iter);
       spi_object_append_reference (&iter, obj);
     }
-  if (obj)
-    g_object_unref (G_OBJECT (obj));
 
   return reply;
 }
@@ -438,6 +436,21 @@ init_role_lookup_table (Accessibility_Role * role_table)
   role_table[ATK_ROLE_LINK] = Accessibility_ROLE_LINK;
   role_table[ATK_ROLE_INPUT_METHOD_WINDOW] =
     Accessibility_ROLE_INPUT_METHOD_WINDOW;
+  role_table[ATK_ROLE_TABLE_ROW] = Accessibility_ROLE_TABLE_ROW;
+  role_table[ATK_ROLE_TREE_ITEM] = Accessibility_ROLE_TREE_ITEM;
+  role_table[ATK_ROLE_DOCUMENT_SPREADSHEET] =
+    Accessibility_ROLE_DOCUMENT_SPREADSHEET;
+  role_table[ATK_ROLE_DOCUMENT_PRESENTATION] =
+    Accessibility_ROLE_DOCUMENT_PRESENTATION;
+  role_table[ATK_ROLE_DOCUMENT_TEXT] = Accessibility_ROLE_DOCUMENT_TEXT;
+  role_table[ATK_ROLE_DOCUMENT_WEB] = Accessibility_ROLE_DOCUMENT_WEB;
+  role_table[ATK_ROLE_DOCUMENT_EMAIL] = Accessibility_ROLE_DOCUMENT_EMAIL;
+  role_table[ATK_ROLE_COMMENT] = Accessibility_ROLE_COMMENT;
+  role_table[ATK_ROLE_LIST_BOX] = Accessibility_ROLE_LIST_BOX;
+  role_table[ATK_ROLE_GROUPING] = Accessibility_ROLE_GROUPING;
+  role_table[ATK_ROLE_IMAGE_MAP] = Accessibility_ROLE_IMAGE_MAP;
+  role_table[ATK_ROLE_NOTIFICATION] = Accessibility_ROLE_NOTIFICATION;
+  role_table[ATK_ROLE_INFO_BAR] = Accessibility_ROLE_INFO_BAR;
   return TRUE;
 }