X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-hbox-cell-renderer.c;h=a01f4830f435588a9460492e085ad8cd9c371dcb;hb=ec634ddf7de7879e90c401bd0534bf25c6eff577;hp=0d2b66ff529d3a264c61841e31782b9a74d5ac61;hpb=6bab4bfef92fef73852d6acd51d1ebf381a338e4;p=modest diff --git a/src/widgets/modest-hbox-cell-renderer.c b/src/widgets/modest-hbox-cell-renderer.c index 0d2b66f..a01f483 100644 --- a/src/widgets/modest-hbox-cell-renderer.c +++ b/src/widgets/modest-hbox-cell-renderer.c @@ -30,7 +30,7 @@ #include #include -#include +#include #include #include @@ -202,6 +202,8 @@ modest_hbox_cell_renderer_get_size (GtkCellRenderer *cell, { gint calc_width, calc_height; gint full_width, full_height; + guint xpad, ypad; + gfloat xalign, yalign; GList *node; ModestHBoxCellRendererPrivate *priv = MODEST_HBOX_CELL_RENDERER_GET_PRIVATE (cell); @@ -220,18 +222,25 @@ modest_hbox_cell_renderer_get_size (GtkCellRenderer *cell, } } - full_width = (gint) cell->xpad * 2 + calc_width; - full_height = (gint) cell->ypad * 2 + calc_height; + g_object_get (cell, + "xpad", &xpad, + "ypad", &ypad, + "xalign", &xalign, + "yalign", &yalign, + NULL); + + full_width = (gint) xpad * 2 + calc_width; + full_height = (gint) ypad * 2 + calc_height; if (rectangle && calc_width > 0 && calc_height > 0) { if (x_offset) { *x_offset = (((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ? - (1.0 - cell->xalign) : cell->xalign) * + (1.0 - xalign) : xalign) * (rectangle->width - full_width)); *x_offset = MAX (*x_offset, 0); } if (y_offset) { - *y_offset = ((cell->yalign) * + *y_offset = ((yalign) * (rectangle->height - full_height)); *y_offset = MAX (*y_offset, 0); } @@ -264,15 +273,11 @@ modest_hbox_cell_renderer_render (GtkCellRenderer *cell, GList *node = NULL; GtkCellRenderer *child; gint width, extra; - GtkRequisition req; direction = gtk_widget_get_direction (widget); nvis_children = 0; nexpand_children = 0; - /* first, retrieve the requisition of the children cell renderers */ - modest_hbox_cell_renderer_get_size (cell, widget, NULL, NULL, NULL, &(req.width), &(req.height)); - /* Counts visible and expandable children cell renderers */ for (node = priv->renderers_list; node != NULL; node = g_list_next (node)) { gboolean visible, expand; @@ -293,6 +298,10 @@ modest_hbox_cell_renderer_render (GtkCellRenderer *cell, GdkRectangle child_alloc; if (nexpand_children > 0) { + GtkRequisition req; + + /* retrieve the requisition of the children cell renderers */ + modest_hbox_cell_renderer_get_size (cell, widget, NULL, NULL, NULL, &(req.width), &(req.height)); width = cell_area->width - req.width; extra = width / nexpand_children; } else { @@ -316,7 +325,6 @@ modest_hbox_cell_renderer_render (GtkCellRenderer *cell, GtkRequisition child_req; gint child_xpad, child_ypad; GdkRectangle child_expose_area; - gtk_cell_renderer_get_size (child, widget, NULL, NULL, NULL, &(child_req.width), &(child_req.height)); g_object_get (child, "xpad", &child_xpad, "ypad", &child_ypad, NULL);