From ff06ea9170564e5d67163660792d24f40c489e73 Mon Sep 17 00:00:00 2001 From: Mathias Hasselmann Date: Tue, 22 Jan 2008 15:03:03 +0000 Subject: [PATCH] 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 --- ChangeLog | 7 +++++++ configure.in | 2 +- gtk/gtkcalendar.c | 36 +++++++++--------------------------- 3 files changed, 17 insertions(+), 28 deletions(-) diff --git a/ChangeLog b/ChangeLog index 89b77fefa3..572b38068b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-01-22 Mathias Hasselmann + + 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 * gtk/gtk-builder-convert (get_property_node): New method diff --git a/configure.in b/configure.in index 6b8de86813..240dc3e2cb 100644 --- a/configure.in +++ b/configure.in @@ -32,7 +32,7 @@ m4_define([gtk_binary_version], [2.10.0]) # required versions of other packages 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([cairo_required_version], [1.2.0]) diff --git a/gtk/gtkcalendar.c b/gtk/gtkcalendar.c index 269125f1db..d47914df1f 100644 --- a/gtk/gtkcalendar.c +++ b/gtk/gtkcalendar.c @@ -2548,8 +2548,6 @@ calendar_paint_day (GtkCalendar *calendar, if (detail && show_details) { - gint i, n_lines; - gchar *markup = g_strconcat ("", detail, "", NULL); pango_layout_set_markup (layout, markup, -1); g_free (markup); @@ -2567,34 +2565,18 @@ calendar_paint_day (GtkCalendar *calendar, pango_attr_list_unref (colors); } - if (priv->detail_width_chars) + pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR); + pango_layout_set_width (layout, PANGO_SCALE * day_rect.width); + + if (priv->detail_height_rows) { - pango_layout_set_wrap (layout, PANGO_WRAP_WORD_CHAR); - pango_layout_set_width (layout, PANGO_SCALE * priv->min_day_width); + gint dy = day_rect.height - (y_loc - day_rect.y); + pango_layout_set_height (layout, PANGO_SCALE * dy); + pango_layout_set_ellipsize (layout, PANGO_ELLIPSIZE_END); } - n_lines = pango_layout_get_line_count (layout); - - if (priv->detail_height_rows && - n_lines > priv->detail_height_rows) - { - n_lines = priv->detail_height_rows; - overflow = TRUE; - } - - for (i = 0; i < n_lines; ++i) - { - 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); - } + cairo_move_to (cr, day_rect.x, y_loc); + pango_cairo_show_layout (cr, layout); } if (GTK_WIDGET_HAS_FOCUS (calendar)