diff options
author | Kristian Rietveld <kris@gtk.org> | 2010-11-28 18:52:18 +0100 |
---|---|---|
committer | Kristian Rietveld <kris@gtk.org> | 2010-11-28 19:54:24 +0100 |
commit | 05b217ab2af9d86c4749ad2d3d50bd45b40018f9 (patch) | |
tree | 7c0bd07cd7872098cfceffb15f9055551ca60f31 /gtk/gtkcellareabox.c | |
parent | 354b3412ddcdd73cd1bc9f2bc23a805d67e7fbf5 (diff) | |
download | gtk+-05b217ab2af9d86c4749ad2d3d50bd45b40018f9.tar.gz |
Allow non-editable cells to receive focus
Slight tweak for GtkTreeView, also non-editable cells must be able to receive
focus to get all keyboard navigation right. This will be further tweaked
to get focus siblings to work like focus cells did in GtkTreeView before
refactoring.
Diffstat (limited to 'gtk/gtkcellareabox.c')
-rw-r--r-- | gtk/gtkcellareabox.c | 27 |
1 files changed, 9 insertions, 18 deletions
diff --git a/gtk/gtkcellareabox.c b/gtk/gtkcellareabox.c index 99b5b41685..00634ad3b4 100644 --- a/gtk/gtkcellareabox.c +++ b/gtk/gtkcellareabox.c @@ -1068,20 +1068,15 @@ gtk_cell_area_box_event (GtkCellArea *area, event_y >= inner_area.y && event_y <= inner_area.y + inner_area.height) { GtkCellRenderer *event_renderer = NULL; + GtkCellRenderer *focus_renderer; - if (gtk_cell_renderer_can_focus (cell->renderer)) - event_renderer = cell->renderer; - else - { - GtkCellRenderer *focus_renderer; - - /* A renderer can have focus siblings but that renderer might not be - * focusable for every row... so we go on to check can_focus here. */ - focus_renderer = gtk_cell_area_get_focus_from_sibling (area, cell->renderer); + focus_renderer = gtk_cell_area_get_focus_from_sibling (area, cell->renderer); + if (focus_renderer) + event_renderer = focus_renderer; + else + event_renderer = cell->renderer; - if (focus_renderer && gtk_cell_renderer_can_focus (focus_renderer)) - event_renderer = focus_renderer; - } + event_renderer = cell->renderer; if (event_renderer) { @@ -1871,13 +1866,9 @@ gtk_cell_area_box_focus (GtkCellArea *area, found_cell = TRUE; else if (found_cell) { - if (gtk_cell_renderer_can_focus (info->renderer)) - { - gtk_cell_area_set_focus_cell (area, info->renderer); + gtk_cell_area_set_focus_cell (area, info->renderer); - cycled_focus = TRUE; - break; - } + cycled_focus = TRUE; } } } |