[gtk+/treeview-refactor] Allow non-editable cells to receive focus



commit 05b217ab2af9d86c4749ad2d3d50bd45b40018f9
Author: Kristian Rietveld <kris gtk org>
Date:   Sun Nov 28 18:52:18 2010 +0100

    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.

 gtk/gtkcellareabox.c |   27 +++++++++------------------
 1 files changed, 9 insertions(+), 18 deletions(-)
---
diff --git a/gtk/gtkcellareabox.c b/gtk/gtkcellareabox.c
index 99b5b41..00634ad 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;
 		}
 	    }
 	}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]