X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-vbox-cell-renderer.c;h=e711f5ccf0aa370f25498b9ad47d11f541d5a9a6;hp=e365606b18ada888168c94cd8b1a3657b53a5659;hb=07c0fefbd027f14c5c3c4c509f9b7e0e6970ffbd;hpb=142541b2a645d663d36f8ee0c09706c1b5678184 diff --git a/src/widgets/modest-vbox-cell-renderer.c b/src/widgets/modest-vbox-cell-renderer.c index e365606..e711f5c 100644 --- a/src/widgets/modest-vbox-cell-renderer.c +++ b/src/widgets/modest-vbox-cell-renderer.c @@ -31,7 +31,7 @@ #include -#include +#include #include #include @@ -187,6 +187,7 @@ modest_vbox_cell_renderer_append (ModestVBoxCellRenderer *vbox_renderer, #if GLIB_CHECK_VERSION(2, 10, 0) /* g_object_ref_sink() was added in glib 2.10: */ g_object_ref_sink (G_OBJECT (cell)); #else + g_object_ref (G_OBJECT (cell)); gtk_object_sink (GTK_OBJECT (cell)); #endif } @@ -202,6 +203,8 @@ modest_vbox_cell_renderer_get_size (GtkCellRenderer *cell, { gint calc_width, calc_height; gint full_width, full_height; + guint xpad, ypad; + gfloat xalign, yalign; GList *node; ModestVBoxCellRendererPrivate *priv = MODEST_VBOX_CELL_RENDERER_GET_PRIVATE (cell); @@ -220,18 +223,25 @@ modest_vbox_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,14 +274,11 @@ modest_vbox_cell_renderer_render (GtkCellRenderer *cell, GList *node = NULL; GtkCellRenderer *child; gint height, 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_vbox_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)) { @@ -293,6 +300,9 @@ modest_vbox_cell_renderer_render (GtkCellRenderer *cell, GdkRectangle child_alloc; if (nexpand_children > 0) { + GtkRequisition req; + + modest_vbox_cell_renderer_get_size (cell, widget, NULL, NULL, NULL, &(req.width), &(req.height)); height = cell_area->height - req.height; extra = height / nexpand_children; } else {