From 767734608e245a3a6684e1087fa9e11280296004 Mon Sep 17 00:00:00 2001 From: Jasmine Hassan Date: Thu, 8 Nov 2012 03:51:08 +0200 Subject: [cell-renderer-text-ellipsized] use new GtkSizeRequest vfunctions This fixes the 'Name' column being too thin in list view. http://git.gnome.org/browse/nautilus/commit/?id=33c9b6d24a60079fe6c4c1be281c76f43def6fee --- .../caja-cell-renderer-text-ellipsized.c | 88 ++++++++++++++-------- 1 file changed, 57 insertions(+), 31 deletions(-) (limited to 'libcaja-private') diff --git a/libcaja-private/caja-cell-renderer-text-ellipsized.c b/libcaja-private/caja-cell-renderer-text-ellipsized.c index 4c3cd443..ad535a5d 100644 --- a/libcaja-private/caja-cell-renderer-text-ellipsized.c +++ b/libcaja-private/caja-cell-renderer-text-ellipsized.c @@ -26,55 +26,81 @@ #include "caja-cell-renderer-text-ellipsized.h" -#define ELLIPSIZE_PROP "ellipsize" - -static void caja_cell_renderer_text_ellipsized_get_size (GtkCellRenderer *cell, - GtkWidget *widget, - GdkRectangle *rectangle, - gint *x_offset, - gint *y_offset, - gint *width, - gint *height); - G_DEFINE_TYPE (CajaCellRendererTextEllipsized, caja_cell_renderer_text_ellipsized, GTK_TYPE_CELL_RENDERER_TEXT); +#if GTK_CHECK_VERSION(3,0,0) static void caja_cell_renderer_text_ellipsized_init (CajaCellRendererTextEllipsized *cell) { - g_object_set (cell, ELLIPSIZE_PROP, PANGO_ELLIPSIZE_END, NULL); + g_object_set (cell, + "ellipsize", PANGO_ELLIPSIZE_END, + "ellipsize-set", TRUE, + NULL); } static void -caja_cell_renderer_text_ellipsized_class_init (CajaCellRendererTextEllipsizedClass *klass) +nautilus_cell_renderer_text_ellipsized_get_preferred_width (GtkCellRenderer *cell, + GtkWidget *widget, + gint *minimum_size, + gint *natural_size) { - GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS (klass); - - cell_class->get_size = caja_cell_renderer_text_ellipsized_get_size; + g_object_set (cell, + "ellipsize", PANGO_ELLIPSIZE_NONE, + "ellipsize-set", FALSE, + NULL); + + GTK_CELL_RENDERER_CLASS + (nautilus_cell_renderer_text_ellipsized_parent_class)->get_preferred_width (cell, widget, + minimum_size, natural_size); + + g_object_set (cell, + "ellipsize", PANGO_ELLIPSIZE_END, + "ellipsize-set", TRUE, + NULL); } - -GtkCellRenderer * -caja_cell_renderer_text_ellipsized_new (void) +#else /* GTK_CHECK_VERSION(3,0,0) */ +static void +caja_cell_renderer_text_ellipsized_init (CajaCellRendererTextEllipsized *cell) { - return g_object_new (CAJA_TYPE_CELL_RENDERER_TEXT_ELLIPSIZED, NULL); + g_object_set (cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL); } static void caja_cell_renderer_text_ellipsized_get_size (GtkCellRenderer *cell, - GtkWidget *widget, - GdkRectangle *cell_area, - gint *x_offset, - gint *y_offset, - gint *width, - gint *height) + GtkWidget *widget, + GdkRectangle *cell_area, + gint *x_offset, + gint *y_offset, + gint *width, + gint *height) { - g_object_set (cell, ELLIPSIZE_PROP, PANGO_ELLIPSIZE_NONE, NULL); + g_object_set (cell, "ellipsize", PANGO_ELLIPSIZE_NONE, NULL); - (* GTK_CELL_RENDERER_CLASS (caja_cell_renderer_text_ellipsized_parent_class)->get_size) - (cell, widget, cell_area, - x_offset, y_offset, - width, height); + GTK_CELL_RENDERER_CLASS + (caja_cell_renderer_text_ellipsized_parent_class)->get_size (cell, widget, + cell_area, + x_offset, y_offset, + width, height); - g_object_set (cell, ELLIPSIZE_PROP, PANGO_ELLIPSIZE_END, NULL); + g_object_set (cell, "ellipsize", PANGO_ELLIPSIZE_END, NULL); } +#endif /* GTK_CHECK_VERSION(3,0,0) */ +static void +caja_cell_renderer_text_ellipsized_class_init (CajaCellRendererTextEllipsizedClass *klass) +{ + GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS (klass); + +#if GTK_CHECK_VERSION(3,0,0) + cell_class->get_preferred_width = caja_cell_renderer_text_ellipsized_get_preferred_width; +#else + cell_class->get_size = caja_cell_renderer_text_ellipsized_get_size; +#endif +} + +GtkCellRenderer * +caja_cell_renderer_text_ellipsized_new (void) +{ + return g_object_new (CAJA_TYPE_CELL_RENDERER_TEXT_ELLIPSIZED, NULL); +} -- cgit v1.2.1