diff options
-rw-r--r-- | ChangeLog | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-0 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-10 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-2 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-4 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-6 | 16 | ||||
-rw-r--r-- | ChangeLog.pre-2-8 | 16 | ||||
-rw-r--r-- | demos/gtk-demo/main.c | 2 | ||||
-rw-r--r-- | demos/gtk-demo/stock_browser.c | 2 | ||||
-rw-r--r-- | gtk/gtkcellrenderer.c | 110 | ||||
-rw-r--r-- | gtk/gtkcellrenderer.h | 60 | ||||
-rw-r--r-- | gtk/gtkcellrenderertext.c | 114 | ||||
-rw-r--r-- | gtk/gtkcellrenderertext.h | 15 | ||||
-rw-r--r-- | gtk/gtkliststore.c | 63 | ||||
-rw-r--r-- | gtk/gtkliststore.h | 8 | ||||
-rw-r--r-- | gtk/gtktreestore.c | 17 | ||||
-rw-r--r-- | gtk/gtktreestore.h | 9 | ||||
-rw-r--r-- | gtk/gtktreeview.c | 31 | ||||
-rw-r--r-- | gtk/gtktreeviewcolumn.c | 43 | ||||
-rw-r--r-- | gtk/gtktreeviewcolumn.h | 4 | ||||
-rw-r--r-- | tests/testtreecolumns.c | 4 | ||||
-rw-r--r-- | tests/testtreefocus.c | 18 | ||||
-rw-r--r-- | tests/testtreesort.c | 2 | ||||
-rw-r--r-- | tests/testtreeview.c | 28 | ||||
-rw-r--r-- | tests/treestoretest.c | 2 |
25 files changed, 468 insertions, 176 deletions
@@ -1,3 +1,19 @@ +Fri Jun 29 22:13:28 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreestore.c (gtk_tree_store_new): changed new_with_types + to just plain new, fixing the number of columns, and column types + at creation time. + + * gtk/gtkliststore.c (gtk_list_store_new): ditto. + + * gtk/gtkcellrenderertext.c + (gtk_cell_renderer_text_set_fixed_height_from_font): FIX the + height to a specific font. + + * gtk/gtktreeview.c (gtk_tree_view_is_expander_column): fix brokenness. + + * tests/*c: change to work with new store models. + 2001-06-29 Havoc Pennington <hp@redhat.com> * Throughout: fixes to compile with G_DISABLE_COMPAT diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 2c486626ea..9a41a14e5c 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,19 @@ +Fri Jun 29 22:13:28 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreestore.c (gtk_tree_store_new): changed new_with_types + to just plain new, fixing the number of columns, and column types + at creation time. + + * gtk/gtkliststore.c (gtk_list_store_new): ditto. + + * gtk/gtkcellrenderertext.c + (gtk_cell_renderer_text_set_fixed_height_from_font): FIX the + height to a specific font. + + * gtk/gtktreeview.c (gtk_tree_view_is_expander_column): fix brokenness. + + * tests/*c: change to work with new store models. + 2001-06-29 Havoc Pennington <hp@redhat.com> * Throughout: fixes to compile with G_DISABLE_COMPAT diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 2c486626ea..9a41a14e5c 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,19 @@ +Fri Jun 29 22:13:28 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreestore.c (gtk_tree_store_new): changed new_with_types + to just plain new, fixing the number of columns, and column types + at creation time. + + * gtk/gtkliststore.c (gtk_list_store_new): ditto. + + * gtk/gtkcellrenderertext.c + (gtk_cell_renderer_text_set_fixed_height_from_font): FIX the + height to a specific font. + + * gtk/gtktreeview.c (gtk_tree_view_is_expander_column): fix brokenness. + + * tests/*c: change to work with new store models. + 2001-06-29 Havoc Pennington <hp@redhat.com> * Throughout: fixes to compile with G_DISABLE_COMPAT diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 2c486626ea..9a41a14e5c 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,19 @@ +Fri Jun 29 22:13:28 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreestore.c (gtk_tree_store_new): changed new_with_types + to just plain new, fixing the number of columns, and column types + at creation time. + + * gtk/gtkliststore.c (gtk_list_store_new): ditto. + + * gtk/gtkcellrenderertext.c + (gtk_cell_renderer_text_set_fixed_height_from_font): FIX the + height to a specific font. + + * gtk/gtktreeview.c (gtk_tree_view_is_expander_column): fix brokenness. + + * tests/*c: change to work with new store models. + 2001-06-29 Havoc Pennington <hp@redhat.com> * Throughout: fixes to compile with G_DISABLE_COMPAT diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 2c486626ea..9a41a14e5c 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,19 @@ +Fri Jun 29 22:13:28 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreestore.c (gtk_tree_store_new): changed new_with_types + to just plain new, fixing the number of columns, and column types + at creation time. + + * gtk/gtkliststore.c (gtk_list_store_new): ditto. + + * gtk/gtkcellrenderertext.c + (gtk_cell_renderer_text_set_fixed_height_from_font): FIX the + height to a specific font. + + * gtk/gtktreeview.c (gtk_tree_view_is_expander_column): fix brokenness. + + * tests/*c: change to work with new store models. + 2001-06-29 Havoc Pennington <hp@redhat.com> * Throughout: fixes to compile with G_DISABLE_COMPAT diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 2c486626ea..9a41a14e5c 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,19 @@ +Fri Jun 29 22:13:28 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreestore.c (gtk_tree_store_new): changed new_with_types + to just plain new, fixing the number of columns, and column types + at creation time. + + * gtk/gtkliststore.c (gtk_list_store_new): ditto. + + * gtk/gtkcellrenderertext.c + (gtk_cell_renderer_text_set_fixed_height_from_font): FIX the + height to a specific font. + + * gtk/gtktreeview.c (gtk_tree_view_is_expander_column): fix brokenness. + + * tests/*c: change to work with new store models. + 2001-06-29 Havoc Pennington <hp@redhat.com> * Throughout: fixes to compile with G_DISABLE_COMPAT diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 2c486626ea..9a41a14e5c 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,19 @@ +Fri Jun 29 22:13:28 2001 Jonathan Blandford <jrb@redhat.com> + + * gtk/gtktreestore.c (gtk_tree_store_new): changed new_with_types + to just plain new, fixing the number of columns, and column types + at creation time. + + * gtk/gtkliststore.c (gtk_list_store_new): ditto. + + * gtk/gtkcellrenderertext.c + (gtk_cell_renderer_text_set_fixed_height_from_font): FIX the + height to a specific font. + + * gtk/gtktreeview.c (gtk_tree_view_is_expander_column): fix brokenness. + + * tests/*c: change to work with new store models. + 2001-06-29 Havoc Pennington <hp@redhat.com> * Throughout: fixes to compile with G_DISABLE_COMPAT diff --git a/demos/gtk-demo/main.c b/demos/gtk-demo/main.c index 9ea9c87ae5..d06070ed0c 100644 --- a/demos/gtk-demo/main.c +++ b/demos/gtk-demo/main.c @@ -680,7 +680,7 @@ create_tree (void) GtkTreeIter iter; gint i; - model = gtk_tree_store_new_with_types (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_BOOLEAN); + model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_BOOLEAN); tree_view = gtk_tree_view_new_with_model (GTK_TREE_MODEL (model)); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (tree_view)); diff --git a/demos/gtk-demo/stock_browser.c b/demos/gtk-demo/stock_browser.c index a850a428d7..b5966b088c 100644 --- a/demos/gtk-demo/stock_browser.c +++ b/demos/gtk-demo/stock_browser.c @@ -134,7 +134,7 @@ create_model (void) GSList *ids; GSList *tmp_list; - store = gtk_list_store_new_with_types (1, STOCK_ITEM_INFO_TYPE); + store = gtk_list_store_new (1, STOCK_ITEM_INFO_TYPE); ids = gtk_stock_list_ids (); ids = g_slist_sort (ids, (GCompareFunc) strcmp); diff --git a/gtk/gtkcellrenderer.c b/gtk/gtkcellrenderer.c index 69e4711ec6..610d807bdb 100644 --- a/gtk/gtkcellrenderer.c +++ b/gtk/gtkcellrenderer.c @@ -40,6 +40,8 @@ enum { PROP_YALIGN, PROP_XPAD, PROP_YPAD, + PROP_WIDTH, + PROP_HEIGHT, }; @@ -78,6 +80,8 @@ gtk_cell_renderer_init (GtkCellRenderer *cell) cell->can_activate = FALSE; cell->visible = TRUE; + cell->width = -1; + cell->height = -1; cell->xalign = 0.5; cell->yalign = 0.5; cell->xpad = 0; @@ -156,6 +160,28 @@ gtk_cell_renderer_class_init (GtkCellRendererClass *class) 2, G_PARAM_READABLE | G_PARAM_WRITABLE)); + + g_object_class_install_property (object_class, + PROP_WIDTH, + g_param_spec_int ("width", + _("width"), + _("The fixed width."), + -1, + 100, + -1, + G_PARAM_READABLE | + G_PARAM_WRITABLE)); + + g_object_class_install_property (object_class, + PROP_HEIGHT, + g_param_spec_int ("height", + _("height"), + _("The fixed height."), + -1, + 100, + -1, + G_PARAM_READABLE | + G_PARAM_WRITABLE)); } static void @@ -186,6 +212,12 @@ gtk_cell_renderer_get_property (GObject *object, case PROP_YPAD: g_value_set_uint (value, cell->ypad); break; + case PROP_WIDTH: + g_value_set_int (value, cell->width); + break; + case PROP_HEIGHT: + g_value_set_int (value, cell->height); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -227,6 +259,14 @@ gtk_cell_renderer_set_property (GObject *object, cell->ypad = g_value_get_uint (value); g_object_notify (object, "ypad"); break; + case PROP_WIDTH: + cell->width = g_value_get_int (value); + g_object_notify (object, "width"); + break; + case PROP_HEIGHT: + cell->height = g_value_get_int (value); + g_object_notify (object, "height"); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec); break; @@ -257,10 +297,29 @@ gtk_cell_renderer_get_size (GtkCellRenderer *cell, gint *width, gint *height) { + gint *real_width = NULL; + gint *real_height = NULL; + g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); g_return_if_fail (GTK_CELL_RENDERER_GET_CLASS (cell)->get_size != NULL); - GTK_CELL_RENDERER_GET_CLASS (cell)->get_size (cell, widget, cell_area, x_offset, y_offset, width, height); + if (width) + { + if (cell->width == -1) + real_width = width; + else + *width = cell->width; + } + if (height) + { + if (cell->height == -1) + real_height = height; + else + *height = cell->height; + } + + if (real_width || real_height) + GTK_CELL_RENDERER_GET_CLASS (cell)->get_size (cell, widget, cell_area, x_offset, y_offset, real_width, real_height); } /** @@ -353,3 +412,52 @@ gtk_cell_renderer_event (GtkCellRenderer *cell, flags); } +/** + * gtk_cell_renderer_set_fixed_size: + * @cell: A #GtkCellRenderer + * @width: the width of the cell renderer, or -1 + * @height: the height of the cell renderer, or -1 + * + * Sets the renderer size to be explicit, independent of the properties set. + **/ +void +gtk_cell_renderer_set_fixed_size (GtkCellRenderer *cell, + gint width, + gint height) +{ + g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); + g_return_if_fail (width >= -1 && height >= -1); + + if (width != cell->width) + { + cell->width = width; + g_object_notify (G_OBJECT (cell), "width"); + } + + if (height != cell->height) + { + cell->height = height; + g_object_notify (G_OBJECT (cell), "height"); + } +} + +/** + * gtk_cell_renderer_get_fixed_size: + * @cell: A #GtkCellRenderer + * @width: location to fill in with the fixed width of the widget, or %NULL + * @height: location to fill in with the fixed height of the widget, or %NULL + * + * Fills in @width and @height with the appropriate size of @cell. + **/ +void +gtk_cell_renderer_get_fixed_size (GtkCellRenderer *cell, + gint *width, + gint *height) +{ + g_return_if_fail (GTK_IS_CELL_RENDERER (cell)); + + if (width) + (* width) = cell->width; + if (height) + (* height) = cell->height; +} diff --git a/gtk/gtkcellrenderer.h b/gtk/gtkcellrenderer.h index 7084ba0c54..10729290f2 100644 --- a/gtk/gtkcellrenderer.h +++ b/gtk/gtkcellrenderer.h @@ -51,14 +51,17 @@ struct _GtkCellRenderer { GtkObject parent; - gboolean can_activate; - gboolean visible; - gfloat xalign; gfloat yalign; + gint width; + gint height; + guint16 xpad; guint16 ypad; + + guint can_activate : 1; + guint visible : 1; }; struct _GtkCellRendererClass @@ -91,28 +94,35 @@ struct _GtkCellRendererClass GtkCellRendererState flags); }; -GtkType gtk_cell_renderer_get_type (void); -void gtk_cell_renderer_get_size (GtkCellRenderer *cell, - GtkWidget *widget, - GdkRectangle *cell_area, - gint *x_offset, - gint *y_offset, - gint *width, - gint *height); -void gtk_cell_renderer_render (GtkCellRenderer *cell, - GdkWindow *window, - GtkWidget *widget, - GdkRectangle *background_area, - GdkRectangle *cell_area, - GdkRectangle *expose_area, - GtkCellRendererState flags); -gboolean gtk_cell_renderer_event (GtkCellRenderer *cell, - GdkEvent *event, - GtkWidget *widget, - gchar *path, - GdkRectangle *background_area, - GdkRectangle *cell_area, - GtkCellRendererState flags); +GtkType gtk_cell_renderer_get_type (void); +void gtk_cell_renderer_get_size (GtkCellRenderer *cell, + GtkWidget *widget, + GdkRectangle *cell_area, + gint *x_offset, + gint *y_offset, + gint *width, + gint *height); +void gtk_cell_renderer_render (GtkCellRenderer *cell, + GdkWindow *window, + GtkWidget *widget, + GdkRectangle *background_area, + GdkRectangle *cell_area, + GdkRectangle *expose_area, + GtkCellRendererState flags); +gboolean gtk_cell_renderer_event (GtkCellRenderer *cell, + GdkEvent *event, + GtkWidget *widget, + gchar *path, + GdkRectangle *background_area, + GdkRectangle *cell_area, + GtkCellRendererState flags); +void gtk_cell_renderer_set_fixed_size (GtkCellRenderer *cell, + gint width, + gint height); +void gtk_cell_renderer_get_fixed_size (GtkCellRenderer *cell, + gint *width, + gint *height); + #ifdef __cplusplus } diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c index 937835f615..f79e1c8f8a 100644 --- a/gtk/gtkcellrenderertext.c +++ b/gtk/gtkcellrenderertext.c @@ -127,6 +127,8 @@ gtk_cell_renderer_text_init (GtkCellRendererText *celltext) GTK_CELL_RENDERER (celltext)->yalign = 0.5; GTK_CELL_RENDERER (celltext)->xpad = 2; GTK_CELL_RENDERER (celltext)->ypad = 2; + + celltext->fixed_height_rows = -1; } static void @@ -785,11 +787,15 @@ gtk_cell_renderer_text_set_property (GObject *object, if (font_desc) pango_font_description_free (font_desc); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; } break; case PROP_FONT_DESC: set_font_description (celltext, g_value_get_boxed (value)); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_FAMILY: @@ -801,6 +807,8 @@ gtk_cell_renderer_text_set_property (GObject *object, g_object_notify (G_OBJECT (celltext), "family_set"); g_object_notify (G_OBJECT (celltext), "font_desc"); g_object_notify (G_OBJECT (celltext), "font"); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_STYLE: @@ -810,6 +818,8 @@ gtk_cell_renderer_text_set_property (GObject *object, g_object_notify (G_OBJECT (celltext), "style_set"); g_object_notify (G_OBJECT (celltext), "font_desc"); g_object_notify (G_OBJECT (celltext), "font"); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_VARIANT: @@ -819,6 +829,8 @@ gtk_cell_renderer_text_set_property (GObject *object, g_object_notify (G_OBJECT (celltext), "variant_set"); g_object_notify (G_OBJECT (celltext), "font_desc"); g_object_notify (G_OBJECT (celltext), "font"); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_WEIGHT: @@ -828,6 +840,8 @@ gtk_cell_renderer_text_set_property (GObject *object, g_object_notify (G_OBJECT (celltext), "weight_set"); g_object_notify (G_OBJECT (celltext), "font_desc"); g_object_notify (G_OBJECT (celltext), "font"); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_STRETCH: @@ -837,6 +851,8 @@ gtk_cell_renderer_text_set_property (GObject *object, g_object_notify (G_OBJECT (celltext), "stretch_set"); g_object_notify (G_OBJECT (celltext), "font_desc"); g_object_notify (G_OBJECT (celltext), "font"); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_SIZE: @@ -846,11 +862,15 @@ gtk_cell_renderer_text_set_property (GObject *object, g_object_notify (G_OBJECT (celltext), "size_set"); g_object_notify (G_OBJECT (celltext), "font_desc"); g_object_notify (G_OBJECT (celltext), "font"); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_SCALE: celltext->font_scale = g_value_get_double (value); celltext->scale_set = TRUE; + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_SIZE_POINTS: @@ -860,6 +880,8 @@ gtk_cell_renderer_text_set_property (GObject *object, g_object_notify (G_OBJECT (celltext), "size_set"); g_object_notify (G_OBJECT (celltext), "font_desc"); g_object_notify (G_OBJECT (celltext), "font"); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_EDITABLE: @@ -885,6 +907,8 @@ gtk_cell_renderer_text_set_property (GObject *object, celltext->rise = g_value_get_int (value); celltext->rise_set = TRUE; g_object_notify (G_OBJECT (celltext), "rise_set"); + if (celltext->fixed_height_rows != -1) + celltext->calc_fixed_height = TRUE; break; case PROP_BACKGROUND_SET: @@ -1083,20 +1107,54 @@ gtk_cell_renderer_text_get_size (GtkCellRenderer *cell, gint *width, gint *height) { - GtkCellRendererText *celltext = (GtkCellRendererText *)cell; + GtkCellRendererText *celltext = (GtkCellRendererText *) cell; PangoRectangle rect; PangoLayout *layout; - if (celltext->fixed_size) + if (celltext->calc_fixed_height) { - if (width) - *width = celltext->width; - if (height) - *height = celltext->height; + PangoContext *context; + PangoFontMetrics metrics; + PangoFontDescription font_desc; + + font_desc = (* widget->style->font_desc); + + if (celltext->family_set && + celltext->font.family_name) + font_desc.family_name = celltext->font.family_name; + if (celltext->style_set) + font_desc.style = celltext->font.style; - return; + if (celltext->variant_set) + font_desc.variant = celltext->font.variant; + + if (celltext->weight_set) + font_desc.weight = celltext->font.weight; + + if (celltext->stretch_set) + font_desc.stretch = celltext->font.stretch; + + if (celltext->size_set && + celltext->font.size >= 0) + font_desc.size = celltext->font.size; + + context = gtk_widget_get_pango_context (widget); + pango_context_get_metrics (context, + &font_desc, + pango_context_get_language (context), + &metrics); + gtk_cell_renderer_set_fixed_size (cell, + cell->width, 2*cell->ypad + + celltext->fixed_height_rows*(metrics.ascent + metrics.descent)/PANGO_SCALE); + if (height) + { + *height = cell->height; + height = NULL; + } + celltext->calc_fixed_height = FALSE; + if (width == NULL) + return; } - layout = get_layout (celltext, widget, FALSE, 0); pango_layout_get_pixel_extents (layout, NULL, &rect); @@ -1187,29 +1245,33 @@ gtk_cell_renderer_text_render (GtkCellRenderer *cell, } /** - * gtk_cell_renderer_text_set_fixed_size: + * gtk_cell_renderer_text_set_fixed_height_from_font: * @renderer: A #GtkCellRendererText - * @fixed_size: TRUE if the renderer should be a fixed height. - * @width: The width of the cell - * @height: The height it of the cell, or -1 + * @number_of_rows: Number of rows of text each cell renderer is allocated, or -1 * - * Sets the height of a renderer to explicitly be a certain size. This - * function is unflexible, and should really only be used if calculating the - * size of a cell is too slow. + * Sets the height of a renderer to explicitly be determined by the "font" and + * "y_pad" property set on it. Further changes in these properties do not + * affect the height, so they must be accompanied by a subsequent call to this + * function. Using this function is unflexible, and should really only be used + * if calculating the size of a cell is too slow. If @no_rows is -1, then the + * fixed height is unset, and the height is determined by the properties again. **/ void -gtk_cell_renderer_text_set_fixed_size (GtkCellRendererText *renderer, - gboolean fixed_size, - gint width, - gint height) +gtk_cell_renderer_text_set_fixed_height_from_font (GtkCellRendererText *renderer, + gint number_of_rows) { g_return_if_fail (GTK_IS_CELL_RENDERER_TEXT (renderer)); + g_return_if_fail (number_of_rows == -1 || number_of_rows > 0); - if (renderer->fixed_size == (fixed_size)?TRUE:FALSE) - return; - - renderer->fixed_size = (fixed_size)?TRUE:FALSE; - renderer->height = height; - renderer->width = width; - + if (number_of_rows == -1) + { + gtk_cell_renderer_set_fixed_size (GTK_CELL_RENDERER (renderer), + GTK_CELL_RENDERER (renderer)->width, + -1); + } + else + { + renderer->fixed_height_rows = number_of_rows; + renderer->calc_fixed_height = TRUE; + } } diff --git a/gtk/gtkcellrenderertext.h b/gtk/gtkcellrenderertext.h index 58068ed9a2..523d39a036 100644 --- a/gtk/gtkcellrenderertext.h +++ b/gtk/gtkcellrenderertext.h @@ -54,10 +54,8 @@ struct _GtkCellRendererText PangoUnderline underline_style; gint rise; - gint width; - gint height; + gint fixed_height_rows; - guint fixed_size : 1; guint strikethrough : 1; /* editable feature doesn't work */ @@ -83,6 +81,7 @@ struct _GtkCellRendererText guint strikethrough_set : 1; guint editable_set : 1; + guint calc_fixed_height : 1; }; struct _GtkCellRendererTextClass @@ -90,13 +89,11 @@ struct _GtkCellRendererTextClass GtkCellRendererClass parent_class; }; -GtkType gtk_cell_renderer_text_get_type (void); -GtkCellRenderer *gtk_cell_renderer_text_new (void); +GtkType gtk_cell_renderer_text_get_type (void); +GtkCellRenderer *gtk_cell_renderer_text_new (void); -void gtk_cell_renderer_text_set_fixed_size (GtkCellRendererText *renderer, - gboolean fixed_size, - gint width, - gint height); +void gtk_cell_renderer_text_set_fixed_height_from_font (GtkCellRendererText *renderer, + gint number_of_rows); #ifdef __cplusplus diff --git a/gtk/gtkliststore.c b/gtk/gtkliststore.c index 81bbaf0dcb..5c0f29ef33 100644 --- a/gtk/gtkliststore.c +++ b/gtk/gtkliststore.c @@ -65,6 +65,13 @@ static gboolean gtk_list_store_iter_parent (GtkTreeModel *tree_mode GtkTreeIter *child); +static void gtk_list_store_set_n_columns (GtkListStore *list_store, + gint n_columns); +static void gtk_list_store_set_column_type (GtkListStore *list_store, + gint column, + GType type); + + /* Drag and Drop */ static gboolean gtk_list_store_drag_data_delete (GtkTreeDragSource *drag_source, GtkTreePath *path); @@ -235,38 +242,18 @@ gtk_list_store_init (GtkListStore *list_store) /** * gtk_list_store_new: - * - * Creates a new #GtkListStore. A #GtkListStore implements the - * #GtkTreeModel interface, and stores a linked list of - * rows; each row can have any number of columns. Columns are of uniform type, - * i.e. all cells in a column have the same type such as #G_TYPE_STRING or - * #GDK_TYPE_PIXBUF. Use #GtkListStore to store data to be displayed in a - * #GtkTreeView. - * - * Return value: a new #GtkListStore - **/ -GtkListStore * -gtk_list_store_new (void) -{ - return GTK_LIST_STORE (g_object_new (gtk_list_store_get_type (), NULL)); -} - -/** - * gtk_list_store_new_with_types: * @n_columns: number of columns in the list store * @Varargs: all #GType types for the columns, from first to last * - * Creates a new list store as with gtk_list_store_new(), simultaneously setting - * up the columns and column types as with gtk_list_store_set_n_columns() and - * gtk_list_store_set_column_type(). As an example, - * gtk_tree_store_new_with_types (3, G_TYPE_INT, G_TYPE_STRING, - * GTK_TYPE_PIXBUF); will create a new GtkListStore with three columns, of type - * int, string and GtkPixbuf respectively. + * Creates a new list store as with @n_columns columns each of the types passed + * in. As an example, gtk_tree_store_new (3, G_TYPE_INT, G_TYPE_STRING, + * GDK_TYPE_PIXBUF); will create a new GtkListStore with three columns, of type + * int, string and GDkPixbuf respectively. * * Return value: a new #GtkListStore **/ GtkListStore * -gtk_list_store_new_with_types (gint n_columns, +gtk_list_store_new (gint n_columns, ...) { GtkListStore *retval; @@ -275,7 +262,7 @@ gtk_list_store_new_with_types (gint n_columns, g_return_val_if_fail (n_columns > 0, NULL); - retval = gtk_list_store_new (); + retval = GTK_LIST_STORE (g_object_new (gtk_list_store_get_type (), NULL)); gtk_list_store_set_n_columns (retval, n_columns); va_start (args, n_columns); @@ -298,15 +285,7 @@ gtk_list_store_new_with_types (gint n_columns, return retval; } -/** - * gtk_list_store_set_n_columns: - * @store: a #GtkListStore - * @n_columns: number of columns - * - * Sets the number of columns in the #GtkListStore. - * - **/ -void +static void gtk_list_store_set_n_columns (GtkListStore *list_store, gint n_columns) { @@ -340,19 +319,7 @@ gtk_list_store_set_n_columns (GtkListStore *list_store, list_store->n_columns = n_columns; } -/** - * gtk_list_store_set_column_type: - * @store: a #GtkListStore - * @column: column number - * @type: type of the data stored in @column - * - * Supported types include: %G_TYPE_UINT, %G_TYPE_INT, %G_TYPE_UCHAR, - * %G_TYPE_CHAR, %G_TYPE_BOOLEAN, %G_TYPE_POINTER, %G_TYPE_FLOAT, - * %G_TYPE_DOUBLE, %G_TYPE_STRING, %G_TYPE_OBJECT, and %G_TYPE_BOXED, along with - * subclasses of those types such as %GDK_TYPE_PIXBUF. - * - **/ -void +static void gtk_list_store_set_column_type (GtkListStore *list_store, gint column, GType type) diff --git a/gtk/gtkliststore.h b/gtk/gtkliststore.h index 1d63488727..f78000f680 100644 --- a/gtk/gtkliststore.h +++ b/gtk/gtkliststore.h @@ -60,14 +60,8 @@ struct _GtkListStoreClass GtkType gtk_list_store_get_type (void); -GtkListStore *gtk_list_store_new (void); -GtkListStore *gtk_list_store_new_with_types (gint n_columns, +GtkListStore *gtk_list_store_new (gint n_columns, ...); -void gtk_list_store_set_n_columns (GtkListStore *store, - gint n_columns); -void gtk_list_store_set_column_type (GtkListStore *store, - gint column, - GType type); void gtk_list_store_set_value (GtkListStore *store, GtkTreeIter *iter, gint column, diff --git a/gtk/gtktreestore.c b/gtk/gtktreestore.c index c03bac4e47..8032294dce 100644 --- a/gtk/gtktreestore.c +++ b/gtk/gtktreestore.c @@ -64,6 +64,13 @@ static gboolean gtk_tree_store_iter_parent (GtkTreeModel *tree_mode GtkTreeIter *child); +static void gtk_tree_store_set_n_columns (GtkTreeStore *tree_store, + gint n_columns); +static void gtk_tree_store_set_column_type (GtkTreeStore *tree_store, + gint column, + GType type); + + /* DND interfaces */ static gboolean gtk_tree_store_drag_data_delete (GtkTreeDragSource *drag_source, GtkTreePath *path); @@ -236,13 +243,7 @@ gtk_tree_store_init (GtkTreeStore *tree_store) } GtkTreeStore * -gtk_tree_store_new (void) -{ - return GTK_TREE_STORE (g_object_new (GTK_TYPE_TREE_STORE, NULL)); -} - -GtkTreeStore * -gtk_tree_store_new_with_types (gint n_columns, +gtk_tree_store_new (gint n_columns, ...) { GtkTreeStore *retval; @@ -251,7 +252,7 @@ gtk_tree_store_new_with_types (gint n_columns, g_return_val_if_fail (n_columns > 0, NULL); - retval = gtk_tree_store_new (); + retval = GTK_TREE_STORE (g_object_new (GTK_TYPE_TREE_STORE, NULL)); gtk_tree_store_set_n_columns (retval, n_columns); va_start (args, n_columns); diff --git a/gtk/gtktreestore.h b/gtk/gtktreestore.h index b6cf74a2d2..37eb935f98 100644 --- a/gtk/gtktreestore.h +++ b/gtk/gtktreestore.h @@ -59,15 +59,8 @@ struct _GtkTreeStoreClass GtkType gtk_tree_store_get_type (void); -GtkTreeStore *gtk_tree_store_new (void); - -GtkTreeStore *gtk_tree_store_new_with_types (gint n_columns, +GtkTreeStore *gtk_tree_store_new (gint n_columns, ...); -void gtk_tree_store_set_n_columns (GtkTreeStore *tree_store, - gint n_columns); -void gtk_tree_store_set_column_type (GtkTreeStore *tree_store, - gint column, - GType type); void gtk_tree_store_set_value (GtkTreeStore *tree_store, GtkTreeIter *iter, gint column, diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index df79a7ae21..d226e86c76 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -2585,7 +2585,7 @@ gtk_tree_view_bin_expose (GtkWidget *widget, background_area.width, background_area.height); - if (gtk_tree_view_is_expander_column(tree_view, column) && + if (gtk_tree_view_is_expander_column (tree_view, column) && TREE_VIEW_DRAW_EXPANDERS(tree_view)) { cell_area.x += depth*tree_view->priv->tab_offset; @@ -5147,17 +5147,20 @@ gtk_tree_view_is_expander_column (GtkTreeView *tree_view, { GList *list; - if (tree_view->priv->expander_column == column) - return TRUE; - - if (column != NULL) - return FALSE; - - for (list = tree_view->priv->columns; list; list = list->next) - if (((GtkTreeViewColumn *)list->data)->visible) - break; - if (list && list->data == column) - return TRUE; + if (tree_view->priv->expander_column != NULL) + { + if (tree_view->priv->expander_column == column) + return TRUE; + return FALSE; + } + else + { + for (list = tree_view->priv->columns; list; list = list->next) + if (((GtkTreeViewColumn *)list->data)->visible) + break; + if (list && list->data == column) + return TRUE; + } return FALSE; } @@ -8196,8 +8199,8 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view, * @destroy: Destroy notifier for @data, or NULL * * This function should almost never be used. It is meant for private use by - * ATK for determining the number of visible rows that are removed when the user - * collapses a row, or a row is deleted. + * ATK for determining the number of visible children that are removed when the + * user collapses a row, or a row is deleted. **/ void gtk_tree_view_set_destroy_count_func (GtkTreeView *tree_view, diff --git a/gtk/gtktreeviewcolumn.c b/gtk/gtktreeviewcolumn.c index f79f6c2cdd..a25774438e 100644 --- a/gtk/gtktreeviewcolumn.c +++ b/gtk/gtktreeviewcolumn.c @@ -60,6 +60,7 @@ struct _GtkTreeViewColumnCellInfo GtkTreeCellDataFunc func; gpointer func_data; GtkDestroyNotify destroy; + gint requested_width; guint16 padding; guint expand : 1; guint fill : 1; @@ -1334,6 +1335,47 @@ gtk_tree_view_column_clear_attributes (GtkTreeViewColumn *tree_column, } } + +/** + * gtk_tree_view_column_set_spacing: + * @tree_column: A #GtkTreeViewColumn. + * @spacing: distance between cell renderers in pixels. + * + * Sets the spacing field of @tree_column, which is the number of pixels to + * place between cell renderers packed into it. + **/ +void +gtk_tree_view_column_set_spacing (GtkTreeViewColumn *tree_column, + gint spacing) +{ + g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); + g_return_if_fail (spacing >= 0); + + if (tree_column->spacing == spacing) + return; + + tree_column->spacing = spacing; + if (tree_column->tree_view) + { + tree_column->dirty = TRUE; + gtk_widget_queue_resize (tree_column->tree_view); + } +} + +/** + * gtk_tree_view_column_get_spacing: + * @tree_column: A #GtkTreeViewColumn. + * + * Returns the spacing of @tree_column. + **/ +gint +gtk_tree_view_column_get_spacing (GtkTreeViewColumn *tree_column) +{ + g_return_val_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column), 0); + + return tree_column->spacing; +} + /* Options for manipulating the columns */ /** @@ -1347,7 +1389,6 @@ void gtk_tree_view_column_set_visible (GtkTreeViewColumn *tree_column, gboolean visible) { - g_return_if_fail (tree_column != NULL); g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (tree_column)); visible = !! visible; diff --git a/gtk/gtktreeviewcolumn.h b/gtk/gtktreeviewcolumn.h index fbb3845b15..b22897dd25 100644 --- a/gtk/gtktreeviewcolumn.h +++ b/gtk/gtktreeviewcolumn.h @@ -66,6 +66,7 @@ struct _GtkTreeViewColumn gfloat xalign; guint property_changed_signal; + gint spacing; gint width; gint requested_width; gint min_width; @@ -135,6 +136,9 @@ void gtk_tree_view_column_set_cell_data_func (GtkTreeViewCol GtkDestroyNotify destroy); void gtk_tree_view_column_clear_attributes (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell_renderer); +void gtk_tree_view_column_set_spacing (GtkTreeViewColumn *tree_column, + gint spacing); +gint gtk_tree_view_column_get_spacing (GtkTreeViewColumn *tree_column); void gtk_tree_view_column_set_visible (GtkTreeViewColumn *tree_column, gboolean visible); gboolean gtk_tree_view_column_get_visible (GtkTreeViewColumn *tree_column); diff --git a/tests/testtreecolumns.c b/tests/testtreecolumns.c index b8e80653fe..ebfd6452d2 100644 --- a/tests/testtreecolumns.c +++ b/tests/testtreecolumns.c @@ -549,8 +549,8 @@ main (int argc, char *argv[]) gtk_init (&argc, &argv); /* First initialize all the models for signal purposes */ - left_tree_model = (GtkTreeModel *) gtk_list_store_new_with_types (2, G_TYPE_STRING, GTK_TYPE_POINTER); - sample_model = (GtkTreeModel *) gtk_list_store_new_with_types (1, G_TYPE_STRING); + left_tree_model = (GtkTreeModel *) gtk_list_store_new (2, G_TYPE_STRING, GTK_TYPE_POINTER); + sample_model = (GtkTreeModel *) gtk_list_store_new (1, G_TYPE_STRING); sample_tree_view_top = gtk_tree_view_new_with_model (sample_model); sample_tree_view_bottom = gtk_tree_view_new_with_model (sample_model); top_right_tree_model = (GtkTreeModel *) view_column_model_new (GTK_TREE_VIEW (sample_tree_view_top)); diff --git a/tests/testtreefocus.c b/tests/testtreefocus.c index 854c3f84ad..adf43f6915 100644 --- a/tests/testtreefocus.c +++ b/tests/testtreefocus.c @@ -154,15 +154,15 @@ make_model (void) TreeStruct *month = toplevel; GtkTreeIter iter; - model = gtk_tree_store_new_with_types (NUM_COLUMNS, - G_TYPE_STRING, - G_TYPE_BOOLEAN, - G_TYPE_BOOLEAN, - G_TYPE_BOOLEAN, - G_TYPE_BOOLEAN, - G_TYPE_BOOLEAN, - G_TYPE_BOOLEAN, - G_TYPE_BOOLEAN); + model = gtk_tree_store_new (NUM_COLUMNS, + G_TYPE_STRING, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN, + G_TYPE_BOOLEAN); while (month->label) { diff --git a/tests/testtreesort.c b/tests/testtreesort.c index 54ff205dfb..dbd69cc16e 100644 --- a/tests/testtreesort.c +++ b/tests/testtreesort.c @@ -65,7 +65,7 @@ main (int argc, char *argv[]) gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start (GTK_BOX (vbox), scrolled_window, TRUE, TRUE, 0); - model = gtk_tree_store_new_with_types (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); + model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); // gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model), 0, GTK_TREE_SORT_ASCENDING); g_print ("start model\n"); tree_view = gtk_tree_view_new_with_model (model); diff --git a/tests/testtreeview.c b/tests/testtreeview.c index 6a717836f7..1a46307f04 100644 --- a/tests/testtreeview.c +++ b/tests/testtreeview.c @@ -291,6 +291,8 @@ set_columns_type (GtkTreeView *tree_view, ColumnsType type) NULL); setup_column (col); + gtk_tree_view_set_expander_column (tree_view, col); + gtk_tree_view_append_column (GTK_TREE_VIEW (tree_view), col); @@ -438,8 +440,6 @@ set_columns_type (GtkTreeView *tree_view, ColumnsType type) #endif - gtk_tree_view_set_expander_column (tree_view, 1); - /* FALL THRU */ case COLUMNS_ONE: @@ -505,10 +505,10 @@ create_list_model (void) t = get_model_types (); - store = gtk_list_store_new_with_types (N_COLUMNS, - t[0], t[1], t[2], - t[3], t[4], t[5], - t[6], t[7], t[8]); + store = gtk_list_store_new (N_COLUMNS, + t[0], t[1], t[2], + t[3], t[4], t[5], + t[6], t[7], t[8]); i = 0; while (i < 200) @@ -589,10 +589,10 @@ create_tree_model (void) t = get_model_types (); - store = gtk_tree_store_new_with_types (N_COLUMNS, - t[0], t[1], t[2], - t[3], t[4], t[5], - t[6], t[7], t[8]); + store = gtk_tree_store_new (N_COLUMNS, + t[0], t[1], t[2], + t[3], t[4], t[5], + t[6], t[7], t[8]); i = 0; while (i < G_TYPE_RESERVED_LAST_FUNDAMENTAL) @@ -675,8 +675,8 @@ main (int argc, models[MODEL_SORTED_TREE] = gtk_tree_model_sort_new_with_model (model); g_object_unref (G_OBJECT (model)); - models[MODEL_EMPTY_LIST] = GTK_TREE_MODEL (gtk_list_store_new ()); - models[MODEL_EMPTY_TREE] = GTK_TREE_MODEL (gtk_tree_store_new ()); + models[MODEL_EMPTY_LIST] = GTK_TREE_MODEL (gtk_list_store_new (0)); + models[MODEL_EMPTY_TREE] = GTK_TREE_MODEL (gtk_tree_store_new (0)); models[MODEL_NULL] = NULL; @@ -1374,7 +1374,7 @@ run_automated_tests (void) gint i; GtkTreeIter iter; - store = gtk_list_store_new_with_types (1, G_TYPE_INT); + store = gtk_list_store_new (1, G_TYPE_INT); model = GTK_TREE_MODEL (store); @@ -1443,7 +1443,7 @@ run_automated_tests (void) GtkTreeStore *store; GtkTreeIter root; - store = gtk_tree_store_new_with_types (1, G_TYPE_INT); + store = gtk_tree_store_new (1, G_TYPE_INT); gtk_tree_model_get_iter_root (GTK_TREE_MODEL (store), &root); treestore_torture_recurse (store, &root, 0); diff --git a/tests/treestoretest.c b/tests/treestoretest.c index 84b127d31e..0c966d76a3 100644 --- a/tests/treestoretest.c +++ b/tests/treestoretest.c @@ -353,7 +353,7 @@ main (int argc, char *argv[]) { gtk_init (&argc, &argv); - base_model = gtk_tree_store_new_with_types (2, G_TYPE_STRING, G_TYPE_STRING); + base_model = gtk_tree_store_new (2, G_TYPE_STRING, G_TYPE_STRING); /* FIXME: reverse this */ make_window (0); |