Add atspi_accessible_get_object_locale
authorMike Gorse <mgorse@suse.com>
Tue, 26 Feb 2013 00:36:12 +0000 (18:36 -0600)
committerMike Gorse <mgorse@suse.com>
Wed, 27 Feb 2013 21:28:12 +0000 (15:28 -0600)
https://bugzilla.gnome.org/show_bug.cgi?id=694368

atspi/atspi-accessible.c
atspi/atspi-accessible.h
doc/libatspi/libatspi-sections.txt
xml/Accessible.xml

index 64cbf7e..03bceca 100644 (file)
@@ -26,6 +26,7 @@
 #include <string.h>
 
 static gboolean enable_caching = FALSE;
+static guint quark_locale;
 
 static void
 atspi_action_interface_init (AtspiAction *action)
@@ -196,6 +197,8 @@ atspi_accessible_class_init (AtspiAccessibleClass *klass)
 
   object_class->dispose = atspi_accessible_dispose;
   object_class->finalize = atspi_accessible_finalize;
+
+  quark_locale = g_quark_from_string ("accessible-locale");
 }
 
 /* TODO: Generate following from spec? */
@@ -1600,3 +1603,35 @@ _atspi_accessible_add_cache (AtspiAccessible *accessible, AtspiCache flag)
 
   accessible->cached_properties |= flag & mask;
 }
+
+/**
+ * atspi_accessible_get_locale:
+ * @accessible: an #AtspiAccessible
+ *
+ * Gets a UTF-8 string indicating the POSIX-style LC_MESSAGES locale
+ * of @accessible.
+ *
+ * Since: 2.7.91
+ *
+ * Returns: a UTF-8 string indicating the POSIX-style LC_MESSAGES
+ *          locale of @accessible.
+ **/
+const gchar*
+atspi_accessible_get_object_locale (AtspiAccessible *accessible, GError **error)
+{
+  gchar *locale;
+
+  g_return_val_if_fail (accessible != NULL, NULL);
+
+  locale = g_object_get_qdata (G_OBJECT (accessible), quark_locale);
+  if (!locale)
+  {
+    if (!_atspi_dbus_get_property (accessible, atspi_interface_accessible,
+                                   "Locale", error, "s", &locale))
+      return NULL;
+    if (locale)
+      g_object_set_qdata_full (G_OBJECT (accessible), quark_locale, locale,
+                               g_free);
+  }
+  return locale;
+}
index 428967e..7047016 100644 (file)
@@ -132,6 +132,8 @@ AtspiValue * atspi_accessible_get_value (AtspiAccessible *obj);
 
 GArray * atspi_accessible_get_interfaces (AtspiAccessible *obj);
 
+const gchar* atspi_accessible_get_object_locale (AtspiAccessible *accessible, GError **error);
+
 void atspi_accessible_set_cache_mask (AtspiAccessible *accessible, AtspiCache mask);
 
 void atspi_accessible_clear_cache (AtspiAccessible *accessible);
index 121c292..822278c 100644 (file)
@@ -204,6 +204,7 @@ atspi_accessible_get_localized_role_name
 atspi_accessible_get_state_set
 atspi_accessible_get_attributes
 atspi_accessible_get_attributes_as_array
+atspi_accessible_get_locale
 atspi_accessible_get_toolkit_name
 atspi_accessible_get_toolkit_version
 atspi_accessible_get_application
index dabbd4e..9240882 100644 (file)
@@ -12,6 +12,8 @@
 
   <property name="ChildCount" type="i" access="read"/>
 
+  <property name="Locale" type="s" access="read"/>
+
   <method name="GetChildAtIndex">
     <arg direction="in" name="index" type="i"/>
     <arg direction="out" type="(so)"/>