[gtk+/treeview-refactor] Correct calculation of the cell focus rectangle



commit be39883de2cafe5240fac5c38fbcd143d1065392
Author: Kristian Rietveld <kris gtk org>
Date:   Wed Dec 15 21:17:27 2010 +0100

    Correct calculation of the cell focus rectangle
    
    The cell's focus rectangle is located around the cell's aligned area.
    To get to the correct coordinates for this rectangle, we have to subtract
    focus_line_width from the found aligned_area.

 gtk/gtkcellarea.c |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcellarea.c b/gtk/gtkcellarea.c
index 079ab56..1019021 100644
--- a/gtk/gtkcellarea.c
+++ b/gtk/gtkcellarea.c
@@ -1056,10 +1056,21 @@ render_cell (GtkCellRenderer        *renderer,
 	(renderer == focus_cell || 
 	 gtk_cell_area_is_focus_sibling (data->area, focus_cell, renderer)))))
     {
+      gint focus_line_width;
       GdkRectangle cell_focus;
 
       gtk_cell_renderer_get_aligned_area (renderer, data->widget, flags, &inner_area, &cell_focus);
 
+      gtk_widget_style_get (data->widget,
+                            "focus-line-width", &focus_line_width,
+                            NULL);
+
+      /* The focus rectangle is located around the aligned area of the cell */
+      cell_focus.x -= focus_line_width;
+      cell_focus.y -= focus_line_width;
+      cell_focus.width += 2 * focus_line_width;
+      cell_focus.height += 2 * focus_line_width;
+
       if (data->first_focus)
 	{
 	  data->first_focus = FALSE;



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