GNOME Bugzilla – Bug 310134
Unable to expand the user account in Folder pane using accessibility interface
Last modified: 2006-04-19 10:56:01 UTC
Distribution/Version: SuSE 9.3 1. Created an account with name jpremkumar@novell.com 2. Using at-poke tried to fire 'expand' event expected result: The corresponding folder should get expanded actual result: folder is not getting expanded Additional information: When i try to expand other folders like 'On This computer' or 'vfolder' it works
*** Bug 310135 has been marked as a duplicate of this bug. ***
I traced the problem for a while and found this might be a problem of gail component of atk product. The "expand or contract" action will only work for the first time and fails for all the followed tries. when user activate the "expand or contract" action, toggle_cell_expanded() of gailtreeview.c will be called. It has the following code: if (atk_state_set_contains_state (stateset, ATK_STATE_EXPANDED)) gtk_tree_view_collapse_row (tree_view, path); else gtk_tree_view_expand_row (tree_view, path, TRUE); gtk_tree_view_expand_row will emit "row-expanded" signal which will be caught in gailtreeview.c's gail_tree_view_expand_row_gtk(). It will try to update the cell's state in idle: gailview->idle_expand_id = g_idle_add (idle_expand_row, data); But before the idle function is executed, a "row-inserted" signal is emitted which is caught by model_row_inserted() in gailtreeview.c. It has the following code: if (gailview->idle_expand_id) { g_source_remove (gailview->idle_expand_id); gailview->idle_expand_id = 0; } So the idle function won't be executed in this case and the cell's stateset is not updated. Next time, when user active the action, it will still try to call gtk_tree_view_expand_row (tree_view, path, TRUE); for already expanded row. So the failure is. CC gail developers.
Created attachment 53102 [details] [review] patch to ensure that EXPANDED state is set even when model_row_inserted event is received untested!
Created attachment 53105 [details] [review] revised patch tested version of patch. Designed to avoid regressing bug 132551.
Created attachment 53106 [details] [review] revised patch tested version of patch. Designed to avoid regressing bug 132551.
Created attachment 53107 [details] crash after applying the last patch
Comment on attachment 53107 [details] crash after applying the last patch This crash is unrelated IMO. >... >#3 0x0805eaf0 in segv_redirect (sig=11) at main.c:424 >#4 <signal handler called> >#5 0x41815166 in gail_widget_focus_gtk (widget=0x82fcc78, event=0x80f38d0) > at gailwidget.c:921 >#6 0x40d5fe60 in _gtk_marshal_BOOLEAN__BOXED (closure=0x8301080, > return_value=0xbfd71260, n_param_values=2, param_values=0xbfd7134c, > invocation_hint=0xbfd7124c, marshal_data=0x41815130) at gtkmarshalers.c:83 >#7 0x411b9d19 in g_closure_invoke (closure=0x8301080, return_value=0x0, > n_param_values=0, param_values=0x0, invocation_hint=0x0) at gclosure.c:492 >#8 0x411c9b95 in signal_emit_unlocked_R (node=0x8099b00, detail=0, > instance=0x82fcc78, emission_return=0xbfd714cc, > instance_and_params=0xbfd7134c) at gsignal.c:2555 >#9 0x411cabee in g_signal_emit_valist (instance=0x82fcc78, signal_id=55, > detail=0, var_args=0xbfd71550 "h\025׿Ð8\017\bxÌ/\b¯%å@xÌ/\bx0\t\b") > at gsignal.c:2254 >#10 0x411cb1f5 in g_signal_emit (instance=0x0, signal_id=0, detail=0) > at gsignal.c:2288 >#11 0x40e523b4 in gtk_widget_event_internal (widget=0x82fcc78, event=0x80f38d0) > at gtkwidget.c:3735 >#12 0x40e62f41 in do_focus_change (widget=0x82fcc78, in=0) at gtkwindow.c:4608...
Created attachment 53117 [details] crash in a cell
Nagappan, I think the stack traces you have recently posted are unrelated. Please file separate bugs for the scenarios in which they occur (unless they are specifically never reproducible without the above patch). Thanks!
Please move the stack traces to new bug(s) if they are still relevant. The bug described in the original comments is fixed in cvs.