Fix state change reporting for accessibility. (#499835, Rich Burridge,
2008-02-12 Matthias Clasen <mclasen@redhat.com> * gtk/gtkiconview.c: Fix state change reporting for accessibility. (#499835, Rich Burridge, patch by LiYan Zhang) svn path=/trunk/; revision=19538
This commit is contained in:
parent
ede4f39e38
commit
0c2788943f
@ -1,3 +1,8 @@
|
|||||||
|
2008-02-12 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
|
* gtk/gtkiconview.c: Fix state change reporting for
|
||||||
|
accessibility. (#499835, Rich Burridge, patch by LiYan Zhang)
|
||||||
|
|
||||||
2008-02-12 Emmanuele Bassi <ebassi@gnome.org>
|
2008-02-12 Emmanuele Bassi <ebassi@gnome.org>
|
||||||
|
|
||||||
* gtk/gtkrecentchooser.c:
|
* gtk/gtkrecentchooser.c:
|
||||||
|
@ -396,6 +396,8 @@ static void gtk_icon_view_item_activate_cell (GtkIco
|
|||||||
GtkIconViewItem *item,
|
GtkIconViewItem *item,
|
||||||
GtkIconViewCellInfo *cell_info,
|
GtkIconViewCellInfo *cell_info,
|
||||||
GdkEvent *event);
|
GdkEvent *event);
|
||||||
|
static void gtk_icon_view_item_selected_changed (GtkIconView *icon_view,
|
||||||
|
GtkIconViewItem *item);
|
||||||
static void gtk_icon_view_put (GtkIconView *icon_view,
|
static void gtk_icon_view_put (GtkIconView *icon_view,
|
||||||
GtkWidget *widget,
|
GtkWidget *widget,
|
||||||
GtkIconViewItem *item,
|
GtkIconViewItem *item,
|
||||||
@ -1667,6 +1669,25 @@ gtk_icon_view_item_activate_cell (GtkIconView *icon_view,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
gtk_icon_view_item_selected_changed (GtkIconView *icon_view,
|
||||||
|
GtkIconViewItem *item)
|
||||||
|
{
|
||||||
|
AtkObject *obj;
|
||||||
|
AtkObject *item_obj;
|
||||||
|
|
||||||
|
obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
|
||||||
|
if (obj != NULL)
|
||||||
|
{
|
||||||
|
item_obj = atk_object_ref_accessible_child (obj, item->index);
|
||||||
|
if (item_obj != NULL)
|
||||||
|
{
|
||||||
|
atk_object_notify_state_change (item_obj, ATK_STATE_SELECTED, item->selected);
|
||||||
|
g_object_unref (item_obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gtk_icon_view_put (GtkIconView *icon_view,
|
gtk_icon_view_put (GtkIconView *icon_view,
|
||||||
GtkWidget *widget,
|
GtkWidget *widget,
|
||||||
@ -2321,6 +2342,7 @@ gtk_icon_view_unselect_all_internal (GtkIconView *icon_view)
|
|||||||
item->selected = FALSE;
|
item->selected = FALSE;
|
||||||
dirty = TRUE;
|
dirty = TRUE;
|
||||||
gtk_icon_view_queue_draw_item (icon_view, item);
|
gtk_icon_view_queue_draw_item (icon_view, item);
|
||||||
|
gtk_icon_view_item_selected_changed (icon_view, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2469,6 +2491,7 @@ gtk_icon_view_real_toggle_cursor_item (GtkIconView *icon_view)
|
|||||||
icon_view->priv->cursor_item->selected = !icon_view->priv->cursor_item->selected;
|
icon_view->priv->cursor_item->selected = !icon_view->priv->cursor_item->selected;
|
||||||
g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
|
g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
|
||||||
|
|
||||||
|
gtk_icon_view_item_selected_changed (icon_view, icon_view->priv->cursor_item);
|
||||||
gtk_icon_view_queue_draw_item (icon_view, icon_view->priv->cursor_item);
|
gtk_icon_view_queue_draw_item (icon_view, icon_view->priv->cursor_item);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3213,14 +3236,23 @@ gtk_icon_view_set_cursor_item (GtkIconView *icon_view,
|
|||||||
{
|
{
|
||||||
AtkObject *obj;
|
AtkObject *obj;
|
||||||
AtkObject *item_obj;
|
AtkObject *item_obj;
|
||||||
|
AtkObject *cursor_item_obj;
|
||||||
|
|
||||||
if (icon_view->priv->cursor_item == item &&
|
if (icon_view->priv->cursor_item == item &&
|
||||||
(cursor_cell < 0 || cursor_cell == icon_view->priv->cursor_cell))
|
(cursor_cell < 0 || cursor_cell == icon_view->priv->cursor_cell))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
|
||||||
if (icon_view->priv->cursor_item != NULL)
|
if (icon_view->priv->cursor_item != NULL)
|
||||||
gtk_icon_view_queue_draw_item (icon_view, icon_view->priv->cursor_item);
|
{
|
||||||
|
gtk_icon_view_queue_draw_item (icon_view, icon_view->priv->cursor_item);
|
||||||
|
if (obj != NULL)
|
||||||
|
{
|
||||||
|
cursor_item_obj = atk_object_ref_accessible_child (obj, icon_view->priv->cursor_item->index);
|
||||||
|
if (cursor_item_obj != NULL)
|
||||||
|
atk_object_notify_state_change (cursor_item_obj, ATK_STATE_FOCUSED, FALSE);
|
||||||
|
}
|
||||||
|
}
|
||||||
icon_view->priv->cursor_item = item;
|
icon_view->priv->cursor_item = item;
|
||||||
if (cursor_cell >= 0)
|
if (cursor_cell >= 0)
|
||||||
icon_view->priv->cursor_cell = cursor_cell;
|
icon_view->priv->cursor_cell = cursor_cell;
|
||||||
@ -3228,12 +3260,12 @@ gtk_icon_view_set_cursor_item (GtkIconView *icon_view,
|
|||||||
gtk_icon_view_queue_draw_item (icon_view, item);
|
gtk_icon_view_queue_draw_item (icon_view, item);
|
||||||
|
|
||||||
/* Notify that accessible focus object has changed */
|
/* Notify that accessible focus object has changed */
|
||||||
obj = gtk_widget_get_accessible (GTK_WIDGET (icon_view));
|
|
||||||
item_obj = atk_object_ref_accessible_child (obj, item->index);
|
item_obj = atk_object_ref_accessible_child (obj, item->index);
|
||||||
|
|
||||||
if (item_obj != NULL)
|
if (item_obj != NULL)
|
||||||
{
|
{
|
||||||
atk_focus_tracker_notify (item_obj);
|
atk_focus_tracker_notify (item_obj);
|
||||||
|
atk_object_notify_state_change (item_obj, ATK_STATE_FOCUSED, TRUE);
|
||||||
g_object_unref (item_obj);
|
g_object_unref (item_obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -3340,9 +3372,10 @@ gtk_icon_view_select_item (GtkIconView *icon_view,
|
|||||||
|
|
||||||
item->selected = TRUE;
|
item->selected = TRUE;
|
||||||
|
|
||||||
gtk_icon_view_queue_draw_item (icon_view, item);
|
gtk_icon_view_item_selected_changed (icon_view, item);
|
||||||
|
|
||||||
g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
|
g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
|
||||||
|
|
||||||
|
gtk_icon_view_queue_draw_item (icon_view, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -3362,6 +3395,7 @@ gtk_icon_view_unselect_item (GtkIconView *icon_view,
|
|||||||
|
|
||||||
item->selected = FALSE;
|
item->selected = FALSE;
|
||||||
|
|
||||||
|
gtk_icon_view_item_selected_changed (icon_view, item);
|
||||||
g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
|
g_signal_emit (icon_view, icon_view_signals[SELECTION_CHANGED], 0);
|
||||||
|
|
||||||
gtk_icon_view_queue_draw_item (icon_view, item);
|
gtk_icon_view_queue_draw_item (icon_view, item);
|
||||||
@ -3859,10 +3893,11 @@ gtk_icon_view_select_all_between (GtkIconView *icon_view,
|
|||||||
col1 <= item->col && item->col <= col2)
|
col1 <= item->col && item->col <= col2)
|
||||||
{
|
{
|
||||||
if (!item->selected)
|
if (!item->selected)
|
||||||
dirty = TRUE;
|
{
|
||||||
|
dirty = TRUE;
|
||||||
item->selected = TRUE;
|
item->selected = TRUE;
|
||||||
|
gtk_icon_view_item_selected_changed (icon_view, item);
|
||||||
|
}
|
||||||
gtk_icon_view_queue_draw_item (icon_view, item);
|
gtk_icon_view_queue_draw_item (icon_view, item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8491,6 +8526,10 @@ gtk_icon_view_item_accessible_ref_state_set (AtkObject *obj)
|
|||||||
atk_state_set_add_state (item->state_set, ATK_STATE_FOCUSED);
|
atk_state_set_add_state (item->state_set, ATK_STATE_FOCUSED);
|
||||||
else
|
else
|
||||||
atk_state_set_remove_state (item->state_set, ATK_STATE_FOCUSED);
|
atk_state_set_remove_state (item->state_set, ATK_STATE_FOCUSED);
|
||||||
|
if (item->item->selected)
|
||||||
|
atk_state_set_add_state (item->state_set, ATK_STATE_SELECTED);
|
||||||
|
else
|
||||||
|
atk_state_set_remove_state (item->state_set, ATK_STATE_SELECTED);
|
||||||
|
|
||||||
return g_object_ref (item->state_set);
|
return g_object_ref (item->state_set);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user