Use pango_layout_set_height() for calendar details (#506049).

* configure.in: Require 1.19.3 for pango_layout_set_height().
* gtk/gtkcalendar.c: Use pango_layout_set_height() for details.

svn path=/trunk/; revision=19392
This commit is contained in:
Mathias Hasselmann 2008-01-22 15:03:03 +00:00
parent 7b3b49c20f
commit ff06ea9170
3 changed files with 17 additions and 28 deletions

View File

@ -1,3 +1,10 @@
2008-01-22 Mathias Hasselmann <mathias@openismus.com>
Use pango_layout_set_height() for calendar details (#506049).
* configure.in: Require 1.19.3 for pango_layout_set_height().
* gtk/gtkcalendar.c: Use pango_layout_set_height() for details.
2008-01-18 Johan Dahlin <johan@gnome.org> 2008-01-18 Johan Dahlin <johan@gnome.org>
* gtk/gtk-builder-convert (get_property_node): New method * gtk/gtk-builder-convert (get_property_node): New method

View File

@ -32,7 +32,7 @@ m4_define([gtk_binary_version], [2.10.0])
# required versions of other packages # required versions of other packages
m4_define([glib_required_version], [2.15.0]) m4_define([glib_required_version], [2.15.0])
m4_define([pango_required_version], [1.17.3]) m4_define([pango_required_version], [1.19.3])
m4_define([atk_required_version], [1.13.0]) m4_define([atk_required_version], [1.13.0])
m4_define([cairo_required_version], [1.2.0]) m4_define([cairo_required_version], [1.2.0])

View File

@ -2548,8 +2548,6 @@ calendar_paint_day (GtkCalendar *calendar,
if (detail && show_details) if (detail && show_details)
{ {
gint i, n_lines;
gchar *markup = g_strconcat ("<small>", detail, "</small>", NULL); gchar *markup = g_strconcat ("<small>", detail, "</small>", NULL);
pango_layout_set_markup (layout, markup, -1); pango_layout_set_markup (layout, markup, -1);
g_free (markup); g_free (markup);
@ -2567,34 +2565,18 @@ calendar_paint_day (GtkCalendar *calendar,
pango_attr_list_unref (colors); pango_attr_list_unref (colors);
} }
if (priv->detail_width_chars)
{
pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR); pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR);
pango_layout_set_width (layout, PANGO_SCALE * priv->min_day_width); pango_layout_set_width (layout, PANGO_SCALE * day_rect.width);
}
n_lines = pango_layout_get_line_count (layout); if (priv->detail_height_rows)
if (priv->detail_height_rows &&
n_lines > priv->detail_height_rows)
{ {
n_lines = priv->detail_height_rows; gint dy = day_rect.height - (y_loc - day_rect.y);
overflow = TRUE; pango_layout_set_height (layout, PANGO_SCALE * dy);
pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END);
} }
for (i = 0; i < n_lines; ++i) cairo_move_to (cr, day_rect.x, y_loc);
{ pango_cairo_show_layout (cr, layout);
PangoLayoutLine *line = pango_layout_get_line_readonly (layout, i);
pango_layout_line_get_pixel_extents (line, NULL, &logical_rect);
x_loc = day_rect.x + (day_rect.width - logical_rect.width) / 2;
y_loc += PANGO_ASCENT (logical_rect);
cairo_move_to (cr, x_loc, y_loc);
pango_cairo_show_layout_line (cr, line);
y_loc += PANGO_DESCENT (logical_rect);
}
} }
if (GTK_WIDGET_HAS_FOCUS (calendar) if (GTK_WIDGET_HAS_FOCUS (calendar)