]> Pileus Git - ~andy/gtk/commitdiff
Fix background area calculation in RTL mode
authorKristian Rietveld <kris@gtk.org>
Thu, 16 Dec 2010 11:26:18 +0000 (12:26 +0100)
committerKristian Rietveld <kris@gtk.org>
Thu, 16 Dec 2010 11:26:18 +0000 (12:26 +0100)
gtk/gtkcellareabox.c

index 56a856bf6a22461f2242b5fc42518d8d90207948..e21bb0c9e9390d8b569e271d9d61349edb9a0f93 100644 (file)
@@ -1148,13 +1148,29 @@ gtk_cell_area_box_foreach_alloc (GtkCellArea          *area,
        {
          if (l == allocated_cells)
            {
-             cell_background.width += cell_background.x - background_area->x;
-             cell_background.x      = background_area->x;
+              /* Add the depth to the first cell */
+              if (rtl)
+                {
+                  cell_background.width += background_area->width - cell_area->width;
+                  cell_background.x      = background_area->x + background_area->width - cell_background.width;
+                }
+              else
+                {
+                  cell_background.width += cell_area->x - background_area->x;
+                  cell_background.x      = background_area->x;
+                }
            }
 
          if (l->next == NULL)
-             cell_background.width = 
-               background_area->width - (cell_background.x - background_area->x);
+            {
+              /* Grant this cell the remaining space */
+              int remain = cell_background.x - background_area->x;
+
+              if (rtl)
+                cell_background.x -= remain;
+              else
+                cell_background.width = background_area->width - remain;
+            }
 
          cell_background.y      = background_area->y;
          cell_background.height = background_area->height;