diff options
author | Hans Petter Jansson <hpj@ximian.com> | 2003-01-26 09:42:05 +0800 |
---|---|---|
committer | Hans Petter <hansp@src.gnome.org> | 2003-01-26 09:42:05 +0800 |
commit | 3cf26e43e21a5c9c551332a1c687a157fbcd3e3c (patch) | |
tree | ebb4ed56342905ee2bc42e04622d6e4fd2d32f93 /calendar/gui/e-week-view-event-item.c | |
parent | cc35ce98a7a85b09dca062f7a781d7718cd17db2 (diff) | |
download | gsoc2013-evolution-3cf26e43e21a5c9c551332a1c687a157fbcd3e3c.tar gsoc2013-evolution-3cf26e43e21a5c9c551332a1c687a157fbcd3e3c.tar.gz gsoc2013-evolution-3cf26e43e21a5c9c551332a1c687a157fbcd3e3c.tar.bz2 gsoc2013-evolution-3cf26e43e21a5c9c551332a1c687a157fbcd3e3c.tar.lz gsoc2013-evolution-3cf26e43e21a5c9c551332a1c687a157fbcd3e3c.tar.xz gsoc2013-evolution-3cf26e43e21a5c9c551332a1c687a157fbcd3e3c.tar.zst gsoc2013-evolution-3cf26e43e21a5c9c551332a1c687a157fbcd3e3c.zip |
Mainly making all views use PangoLayouts for text. When drawing a
2003-01-25 Hans Petter Jansson <hpj@ximian.com>
Mainly making all views use PangoLayouts for text. When drawing a
PangoLayout, the draw offset is the top left corner of the layout,
not the text's baseline. Keep this in mind when viewing the
changes. I'll be brief about the exact changes, since they speak
better for themselves.
* gui/e-day-view-time-item.c (e_day_view_time_item_get_column_width):
Use Pango.
(e_day_view_time_item_draw): Use Pango.
* gui/e-day-view-top-item.c (e_day_view_top_item_draw): Use Pango.
(e_day_view_top_item_draw_long_event): Add some FIXME text so we can
see when this is being used. Is it in use at all?
* gui/e-day-view.c: No longer specify an explicit X font string for
the large font. Use the main font, and change the point size.
(e_day_view_init): Use Pango.
(e_day_view_style_set): Use Pango. Comment out the gdk_font setting
for the drag text items for now.
* gui/e-day-view.h: Use Pango.
* gui/e-week-view-event-item.c (e_week_view_draw_time): Use Pango.
* gui/e-week-view-main-item.c (e_week_view_main_item_draw_day):
Use Pango.
* gui/e-week-view-titles-item.c (e_week_view_titles_item_draw):
Use Pango.
* gui/e-week-view.c: No longer specify an explicit X font string for
the small font. Use the main font, and change the point size.
(e_week_view_init): Use Pango.
(e_week_view_destroy): Use Pango.
(get_string_width): Implemented for convenience.
(get_digit_width): Implemented for convenience.
(e_week_view_style_set): Use Pango.
(e_week_view_recalc_cell_sizes): Use Pango.
(e_week_view_get_time_string_width): Use Pango.
* gui/e-week-view.h: Use Pango.
Following are some random UTF-8 fixes and a crash fix.
* gui/itip-utils.c (comp_description): Use g_locale_to_utf8 ().
* gui/dialogs/comp-editor.c (make_title_from_comp): Return a
UTF-8 string.
* gui/dialogs/alarm-page.c (alarm_page_set_summary): Pass UTF-8
directly to GTK.
* gui/dialogs/delete-comp.c (delete_component_dialog): Ditto.
* gui/dialogs/meeting-page.c (meeting_page_fill_widgets): Ditto.
(meeting_page_construct): Ditto.
* gui/dialogs/recurrence-page.c (recurrence_page_set_summary): Ditto.
* gui/dialogs/event-editor.c (event_editor_finalize): Fix crash caused
by gtk_object_destroy()-ing a non-GtkObject.
svn path=/trunk/; revision=19628
Diffstat (limited to 'calendar/gui/e-week-view-event-item.c')
-rw-r--r-- | calendar/gui/e-week-view-event-item.c | 74 |
1 files changed, 50 insertions, 24 deletions
diff --git a/calendar/gui/e-week-view-event-item.c b/calendar/gui/e-week-view-event-item.c index 1cc1cbe637..10932d76cc 100644 --- a/calendar/gui/e-week-view-event-item.c +++ b/calendar/gui/e-week-view-event-item.c @@ -462,65 +462,91 @@ e_week_view_draw_time (EWeekView *week_view, { GtkStyle *style; GdkGC *gc; - GdkFont *font, *small_font; + GdkFont *font; gint hour_to_display, suffix_width; gint time_y_normal_font, time_y_small_font; gchar buffer[128], *suffix; + PangoLayout *layout; + PangoFontDescription *small_font_desc; style = gtk_widget_get_style (GTK_WIDGET (week_view)); font = gtk_style_get_font (style); - small_font = week_view->small_font; + small_font_desc = week_view->small_font_desc; gc = week_view->main_gc; gdk_gc_set_foreground (gc, &week_view->colors[E_WEEK_VIEW_COLOR_EVENT_TEXT]); - time_y_normal_font = time_y_small_font = time_y + font->ascent; - if (small_font) - time_y_small_font = time_y + small_font->ascent; + layout = gtk_widget_create_pango_layout (GTK_WIDGET (week_view), NULL); + + time_y_normal_font = time_y_small_font = time_y; + if (small_font_desc) + time_y_small_font = time_y; e_week_view_convert_time_to_display (week_view, hour, &hour_to_display, &suffix, &suffix_width); - if (week_view->use_small_font && week_view->small_font) { + if (week_view->use_small_font && week_view->small_font_desc) { g_snprintf (buffer, sizeof (buffer), "%2i:%02i", hour_to_display, minute); /* Draw the hour. */ - if (hour_to_display < 10) - gdk_draw_text (drawable, font, gc, - time_x + week_view->digit_width, - time_y_normal_font, buffer + 1, 1); - else - gdk_draw_text (drawable, font, gc, - time_x, time_y_normal_font, buffer, 2); + if (hour_to_display < 10) { + pango_layout_set_text (layout, buffer + 1, 1); + gdk_draw_layout (drawable, gc, + time_x + week_view->digit_width, + time_y_normal_font, + layout); + } else { + pango_layout_set_text (layout, buffer, 2); + gdk_draw_layout (drawable, gc, + time_x, + time_y_normal_font, + layout); + } time_x += week_view->digit_width * 2; /* Draw the start minute, in the small font. */ - gdk_draw_text (drawable, week_view->small_font, gc, - time_x, time_y_small_font, buffer + 3, 2); + pango_layout_set_font_description (layout, week_view->small_font_desc); + pango_layout_set_text (layout, buffer + 3, 2); + gdk_draw_layout (drawable, gc, + time_x, + time_y_small_font, + layout); + + pango_layout_set_font_description (layout, style->font_desc); time_x += week_view->small_digit_width * 2; /* Draw the 'am'/'pm' suffix, if 12-hour format. */ if (!week_view->use_24_hour_format) { - gdk_draw_string (drawable, font, gc, - time_x, time_y_normal_font, suffix); + pango_layout_set_text (layout, suffix, -1); + gdk_draw_layout (drawable, gc, + time_x, + time_y_normal_font, + layout); } } else { /* Draw the start time in one go. */ g_snprintf (buffer, sizeof (buffer), "%2i:%02i%s", hour_to_display, minute, suffix); - if (hour_to_display < 10) - gdk_draw_string (drawable, font, gc, + if (hour_to_display < 10) { + pango_layout_set_text (layout, buffer + 1, -1); + gdk_draw_layout (drawable, gc, time_x + week_view->digit_width, - time_y_normal_font, buffer + 1); - else - gdk_draw_string (drawable, font, gc, - time_x, time_y_normal_font, - buffer); + time_y_normal_font, + layout); + } else { + pango_layout_set_text (layout, buffer, -1); + gdk_draw_layout (drawable, gc, + time_x, + time_y_normal_font, + layout); + } } + + g_object_unref (layout); } |