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.
This commit is contained in:
Alejandro Piñeiro 2010-12-26 00:13:07 +01:00
parent be8c0e4734
commit 1e196b39b8

View File

@ -237,21 +237,23 @@ gail_toplevel_show_event_watcher (GSignalInvocationHint *ihint,
* Add the window to the list & emit the signal. * Add the window to the list & emit the signal.
* Don't do this for tooltips (Bug #150649). * Don't do this for tooltips (Bug #150649).
*/ */
if (atk_object_get_role (child) != ATK_ROLE_TOOL_TIP) if (atk_object_get_role (child) == ATK_ROLE_TOOL_TIP)
{ {
toplevel->window_list = g_list_append (toplevel->window_list, widget); return TRUE;
}
n_children = g_list_length (toplevel->window_list); 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. /*
*/ * Must subtract 1 from the n_children since the index is 0-based
atk_object_set_parent (child, atk_obj); * but g_list_length is 1-based.
g_signal_emit_by_name (atk_obj, "children-changed::add", */
n_children - 1, atk_object_set_parent (child, atk_obj);
child, NULL); g_signal_emit_by_name (atk_obj, "children-changed::add",
} n_children - 1,
child, NULL);
/* Connect destroy signal callback */ /* Connect destroy signal callback */
g_signal_connect (G_OBJECT(object), g_signal_connect (G_OBJECT(object),