diff options
Diffstat (limited to 'gtk/gtkcellrenderertext.c')
-rw-r--r-- | gtk/gtkcellrenderertext.c | 72 |
1 files changed, 38 insertions, 34 deletions
diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c index a7f347d72d..d4980ec6d7 100644 --- a/gtk/gtkcellrenderertext.c +++ b/gtk/gtkcellrenderertext.c @@ -237,7 +237,7 @@ gtk_cell_renderer_text_class_init (GtkCellRendererTextClass *class) GtkCellRendererClass *cell_class = GTK_CELL_RENDERER_CLASS (class); object_class->finalize = gtk_cell_renderer_text_finalize; - + object_class->get_property = gtk_cell_renderer_text_get_property; object_class->set_property = gtk_cell_renderer_text_set_property; @@ -720,7 +720,7 @@ gtk_cell_renderer_text_get_property (GObject *object, case PROP_FONT: g_value_take_string (value, pango_font_description_to_string (priv->font)); break; - + case PROP_FONT_DESC: g_value_set_boxed (value, priv->font); break; @@ -756,7 +756,7 @@ gtk_cell_renderer_text_get_property (GObject *object, case PROP_SCALE: g_value_set_double (value, priv->font_scale); break; - + case PROP_EDITABLE: g_value_set_boolean (value, priv->editable); break; @@ -771,7 +771,7 @@ gtk_cell_renderer_text_get_property (GObject *object, case PROP_RISE: g_value_set_int (value, priv->rise); - break; + break; case PROP_LANGUAGE: g_value_set_static_string (value, pango_language_to_string (priv->language)); @@ -780,7 +780,7 @@ gtk_cell_renderer_text_get_property (GObject *object, case PROP_ELLIPSIZE: g_value_set_enum (value, priv->ellipsize); break; - + case PROP_WRAP_MODE: g_value_set_enum (value, priv->wrap_mode); break; @@ -788,7 +788,7 @@ gtk_cell_renderer_text_get_property (GObject *object, case PROP_WRAP_WIDTH: g_value_set_int (value, priv->wrap_width); break; - + case PROP_ALIGN: g_value_set_enum (value, priv->align); break; @@ -810,14 +810,14 @@ gtk_cell_renderer_text_get_property (GObject *object, { PangoFontMask mask = get_property_font_set_mask (param_id); g_value_set_boolean (value, (pango_font_description_get_set_fields (priv->font) & mask) != 0); - + break; } case PROP_SCALE_SET: g_value_set_boolean (value, priv->scale_set); break; - + case PROP_EDITABLE_SET: g_value_set_boolean (value, priv->editable_set); break; @@ -845,14 +845,14 @@ gtk_cell_renderer_text_get_property (GObject *object, case PROP_ALIGN_SET: g_value_set_boolean (value, priv->align_set); break; - + case PROP_WIDTH_CHARS: g_value_set_int (value, priv->width_chars); - break; + break; case PROP_MAX_WIDTH_CHARS: g_value_set_int (value, priv->max_width_chars); - break; + break; case PROP_PLACEHOLDER_TEXT: g_value_set_string (value, priv->placeholder_text); @@ -925,7 +925,7 @@ set_font_desc_fields (PangoFontDescription *desc, PangoFontMask to_set) { PangoFontMask changed_mask = 0; - + if (to_set & PANGO_FONT_MASK_FAMILY) { const char *family = pango_font_description_get_family (desc); @@ -953,7 +953,7 @@ set_font_desc_fields (PangoFontDescription *desc, size = 10 * PANGO_SCALE; changed_mask |= PANGO_FONT_MASK_SIZE; } - + pango_font_description_set_size (desc, size); } @@ -1387,7 +1387,7 @@ gtk_cell_renderer_text_set_property (GObject *object, /** * gtk_cell_renderer_text_new: - * + * * Creates a new `GtkCellRendererText`. Adjust how text is drawn using * object properties. Object properties can be * set globally (with g_object_set()). Also, with `GtkTreeViewColumn`, @@ -1395,7 +1395,7 @@ gtk_cell_renderer_text_set_property (GObject *object, * you can bind the “text” property on the cell renderer to a string * value in the model, thus rendering a different string in each row * of the `GtkTreeView`. - * + * * Returns: the new cell renderer **/ GtkCellRenderer * @@ -1419,7 +1419,7 @@ add_attr (PangoAttrList *attr_list, { attr->start_index = 0; attr->end_index = G_MAXINT; - + pango_attr_list_insert (attr_list, attr); } @@ -1446,16 +1446,16 @@ get_layout (GtkCellRendererText *celltext, else attr_list = pango_attr_list_new (); - pango_layout_set_single_paragraph_mode (layout, priv->single_paragraph); + pango_layout_set_single_paragraph (layout, priv->single_paragraph); if (!placeholder_layout && cell_area) { /* Add options that affect appearance but not size */ - + /* note that background doesn't go here, since it affects * background_area not the PangoLayout area */ - + if (priv->foreground_set && (flags & GTK_CELL_RENDERER_SELECTED) == 0) { @@ -1560,7 +1560,7 @@ get_layout (GtkCellRendererText *celltext, PangoRectangle rect; int width, text_width; - pango_layout_get_extents (layout, NULL, &rect); + pango_lines_get_extents (pango_layout_get_lines (layout), NULL, &rect); text_width = rect.width; if (cell_area) @@ -1592,7 +1592,7 @@ get_layout (GtkCellRendererText *celltext, pango_layout_set_alignment (layout, align); } - + return layout; } @@ -1649,7 +1649,7 @@ get_size (GtkCellRenderer *cell, gtk_cell_renderer_set_fixed_size (cell, cell_width, 2 * ypad + priv->fixed_height_rows * PANGO_PIXELS (row_height)); - + if (height) { *height = cell_height; @@ -1660,7 +1660,8 @@ get_size (GtkCellRenderer *cell, return; } - pango_layout_get_pixel_extents (layout, NULL, &rect); + pango_lines_get_extents (pango_layout_get_lines (layout), NULL, &rect); + pango_extents_to_pixels (&rect, NULL); gtk_cell_renderer_get_alignment (cell, &xalign, &yalign); @@ -1725,7 +1726,8 @@ gtk_cell_renderer_text_snapshot (GtkCellRenderer *cell, else if (priv->wrap_width == -1) pango_layout_set_width (layout, -1); - pango_layout_get_pixel_extents (layout, NULL, &rect); + pango_lines_get_extents (pango_layout_get_lines (layout), NULL, &rect); + pango_extents_to_pixels (&rect, NULL); x_offset = x_offset - rect.x; gtk_snapshot_push_clip (snapshot, @@ -1826,7 +1828,7 @@ gtk_cell_renderer_text_start_editing (GtkCellRenderer *cell, if (priv->text) gtk_editable_set_text (GTK_EDITABLE (priv->entry), priv->text); g_object_set_data_full (G_OBJECT (priv->entry), I_(GTK_CELL_RENDERER_TEXT_PATH), g_strdup (path), g_free); - + gtk_editable_select_region (GTK_EDITABLE (priv->entry), 0, -1); priv->in_entry_menu = FALSE; @@ -1849,7 +1851,7 @@ gtk_cell_renderer_text_start_editing (GtkCellRenderer *cell, * gtk_cell_renderer_text_set_fixed_height_from_font: * @renderer: A `GtkCellRendererText` * @number_of_rows: Number of rows of text each cell renderer is allocated, or -1 - * + * * 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 @@ -1911,7 +1913,7 @@ gtk_cell_renderer_text_get_preferred_width (GtkCellRenderer *cell, /* Fetch the length of the complete unwrapped text */ pango_layout_set_width (layout, -1); - pango_layout_get_extents (layout, NULL, &rect); + pango_lines_get_extents (pango_layout_get_lines (layout), NULL, &rect); text_width = rect.width; /* Fetch the average size of a character */ @@ -1952,7 +1954,7 @@ gtk_cell_renderer_text_get_preferred_width (GtkCellRenderer *cell, if (priv->max_width_chars > 0) { int max_width = xpad * 2 + PANGO_PIXELS (char_width) * priv->max_width_chars; - + min_width = MIN (min_width, max_width); nat_width = MIN (nat_width, max_width); } @@ -1972,21 +1974,23 @@ gtk_cell_renderer_text_get_preferred_height_for_width (GtkCellRenderer *cell, int *natural_height) { GtkCellRendererText *celltext = GTK_CELL_RENDERER_TEXT (cell); - PangoLayout *layout; - int text_height, xpad, ypad; + PangoLayout *layout; + int xpad, ypad; + PangoRectangle ext; gtk_cell_renderer_get_padding (cell, &xpad, &ypad); layout = get_layout (celltext, widget, NULL, 0); pango_layout_set_width (layout, (width - xpad * 2) * PANGO_SCALE); - pango_layout_get_pixel_size (layout, NULL, &text_height); + pango_lines_get_extents (pango_layout_get_lines (layout), NULL, &ext); + pango_extents_to_pixels (&ext, NULL); if (minimum_height) - *minimum_height = text_height + ypad * 2; + *minimum_height = ext.height + ypad * 2; if (natural_height) - *natural_height = text_height + ypad * 2; + *natural_height = ext.height + ypad * 2; g_object_unref (layout); } @@ -2024,7 +2028,7 @@ gtk_cell_renderer_text_get_aligned_area (GtkCellRenderer *cell, int y_offset = 0; layout = get_layout (celltext, widget, cell_area, flags); - get_size (cell, widget, cell_area, layout, &x_offset, &y_offset, + get_size (cell, widget, cell_area, layout, &x_offset, &y_offset, &aligned_area->width, &aligned_area->height); aligned_area->x = cell_area->x + x_offset; |