summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlejandro Piñeiro <apinheiro@igalia.com>2014-09-24 19:40:51 +0200
committerAlejandro Piñeiro <apinheiro@igalia.com>2014-09-24 19:40:51 +0200
commitc8cda37e28307ad195996ad54b9ee1680cca3ec3 (patch)
tree19c7897129a64fcb49add0ff5f1af9d8f09207fd
parente9ef7ada37e9621a3b1e83dca7cdade7bc6af0bb (diff)
downloadat-spi2-atk-c8cda37e28307ad195996ad54b9ee1680cca3ec3.tar.gz
Aggressively filtering AddChildren with STATE_MANAGES_DESCENDANTS
-rw-r--r--atk-adaptor/event.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/atk-adaptor/event.c b/atk-adaptor/event.c
index 42d359d..dbfa9dc 100644
--- a/atk-adaptor/event.c
+++ b/atk-adaptor/event.c
@@ -1067,11 +1067,22 @@ children_changed_event_listener (GSignalInvocationHint * signal_hint,
AtkObject *accessible, *ao=NULL;
gpointer child;
+ AtkStateSet *set;
+ gboolean ret;
g_signal_query (signal_hint->signal_id, &signal_query);
name = signal_query.signal_name;
+ /* If the accessible is on STATE_MANAGES_DESCENDANTS state,
+ children-changed signal are not forwarded. */
accessible = ATK_OBJECT (g_value_get_object (&param_values[0]));
+ set = atk_object_ref_state_set (accessible);
+ ret = atk_state_set_contains_state (set, ATK_STATE_MANAGES_DESCENDANTS);
+ g_object_unref (set);
+
+ if (ret)
+ return TRUE;
+
minor = g_quark_to_string (signal_hint->detail);
detail1 = g_value_get_uint (param_values + 1);