- subject = tny_header_dup_subject (header);
- cc = tny_header_dup_cc (header);
- bcc = tny_header_dup_bcc (header);
- to = tny_header_dup_to (header);
- from = tny_header_dup_from (header);
-
- subject_fold = subject?g_utf8_casefold (subject, -1):NULL;
- g_free (subject);
- bcc_fold = bcc?g_utf8_casefold (bcc, -1):NULL;
- g_free (bcc);
- cc_fold = cc?g_utf8_casefold (cc, -1):NULL;
- g_free (cc);
- to_fold = to?g_utf8_casefold (to, -1):NULL;
- g_free (to);
- from_fold = from?g_utf8_casefold (from, -1):NULL;
- g_free (from);
+ subject_fold = g_object_get_data (G_OBJECT (header), _HEADER_VIEW_SUBJECT_FOLD);
+ if (subject_fold == NULL) {
+ gchar *subject;
+ subject = tny_header_dup_subject (header);
+ if (subject != NULL) {
+ subject_fold = subject?g_utf8_casefold (subject, -1):NULL;
+ g_object_set_data_full (G_OBJECT (header), _HEADER_VIEW_SUBJECT_FOLD,
+ subject_fold, (GDestroyNotify) g_free);
+ }
+ g_free (subject);
+ }
+
+ from_fold = g_object_get_data (G_OBJECT (header), _HEADER_VIEW_FROM_FOLD);
+ if (from_fold == NULL) {
+ gchar *from;
+ from = tny_header_dup_from (header);
+ if (from != NULL) {
+ from_fold = from?g_utf8_casefold (from, -1):NULL;
+ g_object_set_data_full (G_OBJECT (header), _HEADER_VIEW_FROM_FOLD,
+ from_fold, (GDestroyNotify) g_free);
+ }
+ g_free (from);
+ }
+
+ to_fold = g_object_get_data (G_OBJECT (header), _HEADER_VIEW_TO_FOLD);
+ if (to_fold == NULL) {
+ gchar *to;
+ to = tny_header_dup_to (header);
+ if (to != NULL) {
+ to_fold = to?g_utf8_casefold (to, -1):NULL;
+ g_object_set_data_full (G_OBJECT (header), _HEADER_VIEW_TO_FOLD,
+ to_fold, (GDestroyNotify) g_free);
+ }
+ g_free (to);
+ }
+
+ cc_fold = g_object_get_data (G_OBJECT (header), _HEADER_VIEW_CC_FOLD);
+ if (cc_fold == NULL) {
+ gchar *cc;
+ cc = tny_header_dup_cc (header);
+ if (cc != NULL) {
+ cc_fold = cc?g_utf8_casefold (cc, -1):NULL;
+ g_object_set_data_full (G_OBJECT (header), _HEADER_VIEW_CC_FOLD,
+ cc_fold, (GDestroyNotify) g_free);
+ }
+ g_free (cc);
+ }
+
+ bcc_fold = g_object_get_data (G_OBJECT (header), _HEADER_VIEW_BCC_FOLD);
+ if (bcc_fold == NULL) {
+ gchar *bcc;
+ bcc = tny_header_dup_bcc (header);
+ if (bcc != NULL) {
+ bcc_fold = bcc?g_utf8_casefold (bcc, -1):NULL;
+ g_object_set_data_full (G_OBJECT (header), _HEADER_VIEW_BCC_FOLD,
+ bcc_fold, (GDestroyNotify) g_free);
+ }
+ g_free (bcc);
+ }