Fix #332604, reported by Joe Wreschnig, patch by Jan Arne Petersen and

2007-01-03  Matthias Clasen  <mclasen@redhat.com>

        Fix #332604, reported by Joe Wreschnig, patch
        by Jan Arne Petersen and Behdad Esfahbod.

        * gtk/gtklabel.c (gtk_label_size_allocate): Only
        set the width of the layout when necessary.
        (get_layout_location): Use pango_layout_get_pixel_extents()
        instead of pango_layout_get_width().



svn path=/trunk/; revision=17052
This commit is contained in:
Matthias Clasen 2007-01-04 05:58:32 +00:00 committed by Matthias Clasen
parent 5db7fbc8dc
commit f5ca424987
2 changed files with 29 additions and 6 deletions

View File

@ -1,3 +1,13 @@
2007-01-03 Matthias Clasen <mclasen@redhat.com>
Fix #332604, reported by Joe Wreschnig, patch
by Jan Arne Petersen and Behdad Esfahbod.
* gtk/gtklabel.c (gtk_label_size_allocate): Only
set the width of the layout when necessary.
(get_layout_location): Use pango_layout_get_pixel_extents()
instead of pango_layout_get_width().
2007-01-03 Matthias Clasen <mclasen@redhat.com>
* modules/printbackends/cups/gtkprintbackendcups.c

View File

@ -2192,7 +2192,18 @@ gtk_label_size_allocate (GtkWidget *widget,
if (label->ellipsize)
{
if (label->layout)
pango_layout_set_width (label->layout, allocation->width * PANGO_SCALE);
{
gint width;
PangoRectangle logical;
width = (allocation->width - label->misc.xpad * 2) * PANGO_SCALE;
pango_layout_set_width (label->layout, -1);
pango_layout_get_extents (label->layout, NULL, &logical);
if (logical.width > width)
pango_layout_set_width (label->layout, width);
}
}
if (label->select_info && label->select_info->window)
@ -2285,12 +2296,14 @@ get_layout_location (GtkLabel *label,
if (label->ellipsize || priv->width_chars > 0)
{
int width;
PangoRectangle logical;
width = pango_layout_get_width (label->layout);
if (width == -1)
pango_layout_get_pixel_size (label->layout, &req_width, NULL);
else
req_width = PANGO_PIXELS (width);
pango_layout_get_pixel_extents (label->layout, NULL, &logical);
req_width = logical.width;
if (width != -1)
req_width = MIN(PANGO_PIXELS (width), req_width);
req_width += 2 * misc->xpad;
}
else
req_width = widget->requisition.width;