diff options
author | Alejandro Piñeiro <apinheiro@igalia.com> | 2010-12-26 00:13:07 +0100 |
---|---|---|
committer | Alejandro Piñeiro <apinheiro@igalia.com> | 2010-12-27 13:21:09 +0100 |
commit | e1029b907c862435b0464b7105b22582a4fb25c8 (patch) | |
tree | db906391bc1dec63e9b20b8b469d1e055866c573 /modules | |
parent | 48b47971b5c6657a8141b9128c5dc05bfa80ced7 (diff) | |
download | gtk+-e1029b907c862435b0464b7105b22582a4fb25c8.tar.gz |
[gail] Proper connection to a toplevel window destroy signal
Only connect to the destroy of a toplevel window if it was
really added to the toplevel list of windows.
The destroy callback was added to remove the window from
the toplevel list. The callback doesn't cause a error,
but would iterate on the toplevel list without success.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/other/gail/gailtoplevel.c | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/modules/other/gail/gailtoplevel.c b/modules/other/gail/gailtoplevel.c index 6205a42ea3..f998a7007a 100644 --- a/modules/other/gail/gailtoplevel.c +++ b/modules/other/gail/gailtoplevel.c @@ -235,21 +235,23 @@ gail_toplevel_show_event_watcher (GSignalInvocationHint *ihint, * Add the window to the list & emit the signal. * Don't do this for tooltips (Bug #150649). */ - if (atk_object_get_role (child) != ATK_ROLE_TOOL_TIP) - { - toplevel->window_list = g_list_append (toplevel->window_list, widget); - - n_children = g_list_length (toplevel->window_list); - - /* - * Must subtract 1 from the n_children since the index is 0-based - * but g_list_length is 1-based. - */ - atk_object_set_parent (child, atk_obj); - g_signal_emit_by_name (atk_obj, "children-changed::add", - n_children - 1, - child, NULL); - } + if (atk_object_get_role (child) == ATK_ROLE_TOOL_TIP) + { + return TRUE; + } + + toplevel->window_list = g_list_append (toplevel->window_list, widget); + + n_children = g_list_length (toplevel->window_list); + + /* + * Must subtract 1 from the n_children since the index is 0-based + * but g_list_length is 1-based. + */ + atk_object_set_parent (child, atk_obj); + g_signal_emit_by_name (atk_obj, "children-changed::add", + n_children - 1, + child, NULL); /* Connect destroy signal callback */ g_signal_connect (G_OBJECT(object), |