summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorAlejandro Piñeiro <apinheiro@igalia.com>2010-12-26 00:13:07 +0100
committerAlejandro Piñeiro <apinheiro@igalia.com>2010-12-27 13:21:09 +0100
commite1029b907c862435b0464b7105b22582a4fb25c8 (patch)
treedb906391bc1dec63e9b20b8b469d1e055866c573 /modules
parent48b47971b5c6657a8141b9128c5dc05bfa80ced7 (diff)
downloadgtk+-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.c32
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),