diff options
author | Matthias Clasen <mclasen@redhat.com> | 2005-05-02 17:53:52 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2005-05-02 17:53:52 +0000 |
commit | ba91bf6d1838e5779afe2404e7c4702a458175a5 (patch) | |
tree | e0daa94b99588488a3aa68ffbfe59b72b55cf4f1 /gtk/gtkcellrenderertext.c | |
parent | a92e48434b90c4216853c798dd5d41f99664632e (diff) | |
download | gtk+-ba91bf6d1838e5779afe2404e7c4702a458175a5.tar.gz |
Return a sufficient width for cases where pango_layout_get_pixel_extents()
2005-05-02 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkcellrenderertext.c (get_size): Return a sufficient
width for cases where pango_layout_get_pixel_extents() returns
a rectangle with nonzero x.
Diffstat (limited to 'gtk/gtkcellrenderertext.c')
-rw-r--r-- | gtk/gtkcellrenderertext.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/gtk/gtkcellrenderertext.c b/gtk/gtkcellrenderertext.c index f7d93b519e..b3235c44a8 100644 --- a/gtk/gtkcellrenderertext.c +++ b/gtk/gtkcellrenderertext.c @@ -1516,7 +1516,7 @@ get_size (GtkCellRenderer *cell, pango_layout_get_pixel_extents (layout, NULL, &rect); if (height) - *height = GTK_CELL_RENDERER (celltext)->ypad * 2 + rect.height; + *height = cell->ypad * 2 + rect.height; /* The minimum size for ellipsized labels is ~ 3 chars */ if (width) @@ -1533,12 +1533,11 @@ get_size (GtkCellRenderer *cell, char_width = pango_font_metrics_get_approximate_char_width (metrics); pango_font_metrics_unref (metrics); - *width = GTK_CELL_RENDERER (celltext)->xpad * 2 - + (PANGO_PIXELS (char_width) * MAX (priv->width_chars, 3)); + *width = cell->xpad * 2 + (PANGO_PIXELS (char_width) * MAX (priv->width_chars, 3)); } else { - *width = GTK_CELL_RENDERER (celltext)->xpad * 2 + rect.width; + *width = cell->xpad * 2 + rect.x + rect.width; } } @@ -1547,16 +1546,16 @@ get_size (GtkCellRenderer *cell, if (x_offset) { if (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) - *x_offset = (1.0 - cell->xalign) * (cell_area->width - rect.width - (2 * cell->xpad)); + *x_offset = (1.0 - cell->xalign) * (cell_area->width - (rect.x + rect.width + 2 * cell->xpad)); else - *x_offset = cell->xalign * (cell_area->width - rect.width - (2 * cell->xpad)); + *x_offset = cell->xalign * (cell_area->width - (rect.x + rect.width + 2 * cell->xpad)); if (priv->ellipsize_set || priv->wrap_width != -1) *x_offset = MAX(*x_offset, 0); } if (y_offset) { - *y_offset = cell->yalign * (cell_area->height - rect.height - (2 * cell->ypad)); + *y_offset = cell->yalign * (cell_area->height - (rect.height + 2 * cell->ypad)); *y_offset = MAX (*y_offset, 0); } } |