diff options
author | Alejandro Piñeiro <apinheiro@igalia.com> | 2014-09-24 19:40:51 +0200 |
---|---|---|
committer | Alejandro Piñeiro <apinheiro@igalia.com> | 2014-09-24 19:40:51 +0200 |
commit | c8cda37e28307ad195996ad54b9ee1680cca3ec3 (patch) | |
tree | 19c7897129a64fcb49add0ff5f1af9d8f09207fd | |
parent | e9ef7ada37e9621a3b1e83dca7cdade7bc6af0bb (diff) | |
download | at-spi2-atk-c8cda37e28307ad195996ad54b9ee1680cca3ec3.tar.gz |
Aggressively filtering AddChildren with STATE_MANAGES_DESCENDANTS
-rw-r--r-- | atk-adaptor/event.c | 11 |
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 (¶m_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); |