]> Pileus Git - ~andy/gtk/commitdiff
Fixed GtkIconView keynav
authorTristan Van Berkom <tristan.van.berkom@gmail.com>
Wed, 5 Jan 2011 12:58:32 +0000 (21:58 +0900)
committerTristan Van Berkom <tristan.van.berkom@gmail.com>
Thu, 6 Jan 2011 04:51:49 +0000 (13:51 +0900)
Icon View was not initially setting focus on a cell when
focus initially comes into the view. Focusing into whatever
is the first cell in the cursor item when set_cursor_item
is called with a NULL cell fixes this.

gtk/gtkiconview.c

index 1d03c03b8129d29192b518e0f6b0948e76169d26..de5889ec78d86ccad549bfb65e83adce513c16f8 100644 (file)
@@ -3100,7 +3100,14 @@ gtk_icon_view_set_cursor_item (GtkIconView     *icon_view,
     }
   icon_view->priv->cursor_item = item;
 
-  gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cursor_cell);
+  if (cursor_cell)
+    gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cursor_cell);
+  else
+    {
+      /* Make sure there is a cell in focus initially */
+      if (!gtk_cell_area_get_focus_cell (icon_view->priv->cell_area))
+       gtk_cell_area_focus (icon_view->priv->cell_area, GTK_DIR_TAB_FORWARD);
+    }
 
   gtk_icon_view_queue_draw_item (icon_view, item);
   
@@ -3734,6 +3741,7 @@ gtk_icon_view_move_cursor_up_down (GtkIconView *icon_view,
                                     direction == GTK_DIR_UP ?
                                     GTK_DIR_TAB_BACKWARD :
                                     GTK_DIR_TAB_FORWARD);
+
         }
 
       gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cell);
@@ -3878,6 +3886,7 @@ gtk_icon_view_move_cursor_left_right (GtkIconView *icon_view,
                                     direction == GTK_DIR_LEFT ?
                                     GTK_DIR_TAB_BACKWARD :
                                     GTK_DIR_TAB_FORWARD);
+
         }
 
       gtk_cell_area_set_focus_cell (icon_view->priv->cell_area, cell);