From 3cf26e43e21a5c9c551332a1c687a157fbcd3e3c Mon Sep 17 00:00:00 2001 From: Hans Petter Jansson Date: Sun, 26 Jan 2003 01:42:05 +0000 Subject: Mainly making all views use PangoLayouts for text. When drawing a 2003-01-25 Hans Petter Jansson 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 --- calendar/gui/dialogs/alarm-page.c | 4 +--- calendar/gui/dialogs/comp-editor.c | 15 ++++++++------- calendar/gui/dialogs/delete-comp.c | 2 +- calendar/gui/dialogs/event-editor.c | 1 - calendar/gui/dialogs/meeting-page.c | 7 ++----- calendar/gui/dialogs/recurrence-page.c | 4 +--- 6 files changed, 13 insertions(+), 20 deletions(-) (limited to 'calendar/gui/dialogs') diff --git a/calendar/gui/dialogs/alarm-page.c b/calendar/gui/dialogs/alarm-page.c index 8f303fce6f..1447f8aca8 100644 --- a/calendar/gui/dialogs/alarm-page.c +++ b/calendar/gui/dialogs/alarm-page.c @@ -620,9 +620,7 @@ alarm_page_set_summary (CompEditorPage *page, const char *summary) apage = ALARM_PAGE (page); priv = apage->priv; - s = e_utf8_to_gtk_string (priv->summary, summary); - gtk_label_set_text (GTK_LABEL (priv->summary), s); - g_free (s); + gtk_label_set_text (GTK_LABEL (priv->summary), summary); } /* set_dates handler for the alarm page */ diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c index 4b2e4fa882..61ce7e072e 100644 --- a/calendar/gui/dialogs/comp-editor.c +++ b/calendar/gui/dialogs/comp-editor.c @@ -768,7 +768,7 @@ comp_editor_get_cal_client (CompEditor *editor) static char * make_title_from_comp (CalComponent *comp) { - char *title; + char *title, *title_utf8; const char *type_string; CalComponentVType type; CalComponentText text; @@ -794,14 +794,15 @@ make_title_from_comp (CalComponent *comp) cal_component_get_summary (comp, &text); if (text.value) { - char *summary; - summary = e_utf8_to_locale_string (text.value); - title = g_strdup_printf (type_string, summary); - g_free (summary); - } else + title = g_strdup_printf (type_string, text.value); + } else { title = g_strdup_printf (type_string, _("No summary")); + } + + title_utf8 = g_locale_to_utf8 (title, -1, NULL, NULL, NULL); + g_free (title); - return title; + return title_utf8; } static const char * diff --git a/calendar/gui/dialogs/delete-comp.c b/calendar/gui/dialogs/delete-comp.c index 9b2621043a..995eed72d3 100644 --- a/calendar/gui/dialogs/delete-comp.c +++ b/calendar/gui/dialogs/delete-comp.c @@ -86,7 +86,7 @@ delete_component_dialog (CalComponent *comp, if (!consider_as_untitled) { cal_component_get_summary (comp, &summary); - tmp = e_utf8_to_gtk_string (widget, summary.value); + tmp = g_strdup (summary.value); } else tmp = NULL; diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c index 758d3c03b4..57c6eac920 100644 --- a/calendar/gui/dialogs/event-editor.c +++ b/calendar/gui/dialogs/event-editor.c @@ -375,7 +375,6 @@ event_editor_finalize (GObject *object) g_object_unref((priv->meet_page)); g_object_unref((priv->sched_page)); - gtk_object_destroy (GTK_OBJECT (priv->model)); g_object_unref((priv->model)); if (G_OBJECT_CLASS (parent_class)->finalize) diff --git a/calendar/gui/dialogs/meeting-page.c b/calendar/gui/dialogs/meeting-page.c index 3917ef18bd..6089af5707 100644 --- a/calendar/gui/dialogs/meeting-page.c +++ b/calendar/gui/dialogs/meeting-page.c @@ -344,9 +344,7 @@ meeting_page_fill_widgets (CompEditorPage *page, CalComponent *comp) string = g_strdup_printf ("%s <%s>", organizer.cn, strip); else string = g_strdup (strip); - s = e_utf8_to_gtk_string (priv->existing_organizer, string); - gtk_label_set_text (GTK_LABEL (priv->existing_organizer), s); - g_free (s); + gtk_label_set_text (GTK_LABEL (priv->existing_organizer), string); g_free (string); priv->existing = TRUE; @@ -744,8 +742,7 @@ meeting_page_construct (MeetingPage *mpage, EMeetingModel *emm, ItipAddress *a = l->data; char *s; - s = e_utf8_to_gtk_string (GTK_COMBO (priv->organizer)->entry, a->full); - priv->address_strings = g_list_append (priv->address_strings, s); + priv->address_strings = g_list_append (priv->address_strings, g_strdup (a->full)); /* Note that the address specified by the backend gets * precedence over the default mail address. diff --git a/calendar/gui/dialogs/recurrence-page.c b/calendar/gui/dialogs/recurrence-page.c index f0defe7122..79c0224509 100644 --- a/calendar/gui/dialogs/recurrence-page.c +++ b/calendar/gui/dialogs/recurrence-page.c @@ -1930,9 +1930,7 @@ recurrence_page_set_summary (CompEditorPage *page, const char *summary) rpage = RECURRENCE_PAGE (page); priv = rpage->priv; - s = e_utf8_to_gtk_string (priv->summary, summary); - gtk_label_set_text (GTK_LABEL (priv->summary), s); - g_free (s); + gtk_label_set_text (GTK_LABEL (priv->summary), summary); } /* set_dates handler for the recurrence page */ -- cgit v1.2.3