Ensure that GtkIconView items get redrawn when the focus cell changes.

Seems the redraw was not happenning from keynav when set_focus_cell()
was called because keynav already updates the focus-cell. Now we
just unconditionally redraw the focus item when set_focus_cell() is
called.
This commit is contained in:
Tristan Van Berkom 2011-01-06 01:30:17 +09:00
parent bab0f5a5c1
commit 4d8c7c5782

View File

@ -3083,6 +3083,13 @@ gtk_icon_view_set_cursor_item (GtkIconView *icon_view,
AtkObject *item_obj; AtkObject *item_obj;
AtkObject *cursor_item_obj; AtkObject *cursor_item_obj;
/* When hitting this path from keynav, the focus cell is
* already set, we dont need to notify the atk object
* but we still need to queue the draw here (in the case
* that the focus cell changes but not the cursor item).
*/
gtk_icon_view_queue_draw_item (icon_view, item);
if (icon_view->priv->cursor_item == item && if (icon_view->priv->cursor_item == item &&
(cursor_cell == NULL || cursor_cell == gtk_cell_area_get_focus_cell (icon_view->priv->cell_area))) (cursor_cell == NULL || cursor_cell == gtk_cell_area_get_focus_cell (icon_view->priv->cell_area)))
return; return;
@ -3109,8 +3116,6 @@ gtk_icon_view_set_cursor_item (GtkIconView *icon_view,
gtk_cell_area_focus (icon_view->priv->cell_area, GTK_DIR_TAB_FORWARD); gtk_cell_area_focus (icon_view->priv->cell_area, GTK_DIR_TAB_FORWARD);
} }
gtk_icon_view_queue_draw_item (icon_view, item);
/* Notify that accessible focus object has changed */ /* Notify that accessible focus object has changed */
item_obj = atk_object_ref_accessible_child (obj, item->index); item_obj = atk_object_ref_accessible_child (obj, item->index);