+static gboolean
+tree_update_state_action (GSignalInvocationHint *signal_hint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data,
+ AtkObject *accessible)
+{
+ update_accessible (accessible);
+}
+
+static gboolean
+tree_update_state_listener (GSignalInvocationHint *signal_hint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data)
+{
+ tree_update_wrapper (signal_hint, n_param_values, param_values, data, tree_update_state_action);
+}
+
+static gboolean
+tree_update_property_action (GSignalInvocationHint *signal_hint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data,
+ AtkObject *accessible)
+{
+ AtkPropertyValues *values;
+ const gchar *pname = NULL;
+
+ values = (AtkPropertyValues*) g_value_get_pointer (¶m_values[1]);
+ pname = values[0].property_name;
+ if (strcmp (pname, "accessible-name") == 0 ||
+ strcmp (pname, "accessible-description") == 0 ||
+ strcmp (pname, "accessible-parent") == 0)
+ {
+ update_accessible (accessible);
+ }
+ /* Parent value us updated by child-add signal of parent object */
+}
+
+static gboolean
+tree_update_property_listener (GSignalInvocationHint *signal_hint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data)
+{
+ tree_update_wrapper (signal_hint, n_param_values, param_values, data, tree_update_property_action);
+}
+
+static gboolean
+tree_update_children_action (GSignalInvocationHint *signal_hint,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer data,
+ AtkObject *accessible)
+{
+ const gchar *detail = NULL;
+ AtkObject *child;
+
+ if (signal_hint->detail)
+ detail = g_quark_to_string (signal_hint->detail);
+
+ if (!strcmp (detail, "add"))
+ {
+ gpointer child;
+ int index = g_value_get_uint (param_values + 1);
+ child = g_value_get_pointer (param_values + 2);
+
+ if (!ATK_IS_OBJECT (child))
+ {
+ child = atk_object_ref_accessible_child (accessible, index);
+#ifdef SPI_ATK_DEBUG
+ non_owned_accessible (child);
+#endif
+ }
+ register_subtree (child);
+ update_accessible (accessible);
+ }
+}
+