static void anjuta_cell_renderer_captioned_image_get_preferred_width (GtkCellRenderer *gtk_cell, GtkWidget *widget, gint *minimum, gint *natural) { gint text_min; gint text_nat; gint image_min; gint image_nat; AnjutaCellRendererCaptionedImage *cell = ANJUTA_CELL_RENDERER_CAPTIONED_IMAGE (gtk_cell); gtk_cell_renderer_get_preferred_width (cell->image, widget, &image_min, &image_nat); gtk_cell_renderer_get_preferred_width (cell->caption, widget, &text_min, &text_nat); if (minimum) { *minimum = MAX (image_min, text_min); *minimum += SPACE * 2; } if (natural) { *natural = MAX (image_nat, text_nat); *natural += SPACE * 2; } }
static void gd_two_lines_renderer_get_preferred_height (GtkCellRenderer *cell, GtkWidget *widget, gint *minimum_size, gint *natural_size) { gint min_width; gtk_cell_renderer_get_preferred_width (cell, widget, &min_width, NULL); gd_two_lines_renderer_get_preferred_height_for_width (cell, widget, min_width, minimum_size, natural_size); }
static void anjuta_cell_renderer_captioned_image_render (GtkCellRenderer *gtk_cell, cairo_t *cr, GtkWidget *widget, const GdkRectangle *background_area, const GdkRectangle *cell_area, GtkCellRendererState flags) { AnjutaCellRendererCaptionedImage *cell = ANJUTA_CELL_RENDERER_CAPTIONED_IMAGE (gtk_cell); GdkRectangle text_area; GdkRectangle pixbuf_area; gint width, height; gtk_cell_renderer_get_preferred_width (cell->image, widget, NULL, &width); gtk_cell_renderer_get_preferred_height (cell->image, widget, NULL, &height); pixbuf_area.y = cell_area->y; pixbuf_area.x = cell_area->x; pixbuf_area.height = height; pixbuf_area.width = cell_area->width; gtk_cell_renderer_get_preferred_width (cell->caption, widget, NULL, &width); gtk_cell_renderer_get_preferred_height (cell->caption, widget, NULL, &height); text_area.x = cell_area->x + (cell_area->width - width) / 2; text_area.y = cell_area->y + (pixbuf_area.height + PAD); text_area.height = height; text_area.width = width; gtk_cell_renderer_render (cell->image, cr, widget, background_area, &pixbuf_area, flags); gtk_cell_renderer_render (cell->caption, cr, widget, background_area, &text_area, flags); }