Bug #561631. Patch from Yue Wang. Ref the button in the idle function to

2009-02-26  Li Yuan  <li.yuan@sun.com>

        * gailbutton.c: (idle_do_action):
        Bug #561631. Patch from Yue Wang. Ref the button in the idle
        function to prevent the button being finalized.

svn path=/trunk/; revision=22408
This commit is contained in:
Li Yuan 2009-02-26 02:28:12 +00:00 committed by Li Yuan
parent 7871e09560
commit 6bcbd9eb4d
2 changed files with 15 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2009-02-26 Li Yuan <li.yuan@sun.com>
* gailbutton.c: (idle_do_action):
Bug #561631. Patch from Yue Wang. Ref the button in the idle
function to prevent the button being finalized.
2009-02-25 Li Yuan <li.yuan@sun.com>
* gailtreeview.c: (gail_tree_view_ref_accessible_at_point):

View File

@ -503,15 +503,20 @@ idle_do_action (gpointer data)
tmp_event.button.send_event = TRUE;
tmp_event.button.time = GDK_CURRENT_TIME;
tmp_event.button.axes = NULL;
g_object_ref (gail_button);
if (widget == NULL /* State is defunct */ ||
!GTK_WIDGET_IS_SENSITIVE (widget) || !GTK_WIDGET_VISIBLE (widget))
return FALSE;
{
g_object_unref (gail_button);
return FALSE;
}
else
gtk_widget_event (widget, &tmp_event);
button = GTK_BUTTON (widget);
while (g_queue_get_length(gail_button->action_queue) != 0)
while (!g_queue_is_empty (gail_button->action_queue))
{
gint action_number = (gint) g_queue_pop_head (gail_button->action_queue);
if (gail_button->default_is_press)
@ -572,7 +577,7 @@ idle_do_action (gpointer data)
break;
}
}
g_object_unref (gail_button);
return FALSE;
}