Index: eab-contact-display.c =================================================================== --- eab-contact-display.c (revision 34764) +++ eab-contact-display.c (working copy) @@ -325,11 +325,24 @@ { char *value = e_text_to_html (str, html_flags); - gtk_html_stream_printf (html_stream, ""); - if (icon) - gtk_html_stream_printf (html_stream, "", icon); - gtk_html_stream_printf (html_stream, "%s: %s", label, value); + if(gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL) + { + gtk_html_stream_printf (html_stream, "%s %s:", value, label); + gtk_html_stream_printf (html_stream, ""); + if (icon) + gtk_html_stream_printf (html_stream, "", icon); + else /* filler for RTL */ + gtk_html_stream_printf (html_stream, " ", icon); + } + else + { + gtk_html_stream_printf (html_stream, ""); + if (icon) + gtk_html_stream_printf (html_stream, "", icon); + gtk_html_stream_printf (html_stream, "%s: %s", label, value); + + } g_free (value); } @@ -350,15 +363,22 @@ { EContactAddress *adr; const char *label; + gboolean is_rtl = (gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL); label = e_contact_get_const (contact, label_field); if (label) { char *html = e_text_to_html (label, E_TEXT_TO_HTML_CONVERT_NL); #ifdef mapping_works - g_string_append_printf (gstr, "%s:
%s%s", html_label, _("(map)"), html); + if(is_rtl) + g_string_append_printf (gstr, "%s%s
%s:", html, _("(map)"), html_label); + else + g_string_append_printf (gstr, "%s:
%s%s", html_label, _("(map)"), html); #else - g_string_append_printf (gstr, "%s:%s", html_label, html); + if(is_rtl) + g_string_append_printf (gstr, "%s%s:", html, html_label); + else + g_string_append_printf (gstr, "%s:%s", html_label, html); #endif g_free (html); @@ -369,17 +389,34 @@ if (adr && (adr->po || adr->ext || adr->street || adr->locality || adr->region || adr->code || adr->country)) { - g_string_append_printf (gstr, "%s:
%s", html_label, _("map")); + if(is_rtl) + { + g_string_append_printf (gstr, ""); - if (adr->po && *adr->po) g_string_append_printf (gstr, "%s
", adr->po); - if (adr->ext && *adr->ext) g_string_append_printf (gstr, "%s
", adr->ext); - if (adr->street && *adr->street) g_string_append_printf (gstr, "%s
", adr->street); - if (adr->locality && *adr->locality) g_string_append_printf (gstr, "%s
", adr->locality); - if (adr->region && *adr->region) g_string_append_printf (gstr, "%s
", adr->region); - if (adr->code && *adr->code) g_string_append_printf (gstr, "%s
", adr->code); - if (adr->country && *adr->country) g_string_append_printf (gstr, "%s
", adr->country); + if (adr->po && *adr->po) g_string_append_printf (gstr, "%s
", adr->po); + if (adr->ext && *adr->ext) g_string_append_printf (gstr, "%s
", adr->ext); + if (adr->street && *adr->street) g_string_append_printf (gstr, "%s
", adr->street); + if (adr->locality && *adr->locality) g_string_append_printf (gstr, "%s
", adr->locality); + if (adr->region && *adr->region) g_string_append_printf (gstr, "%s
", adr->region); + if (adr->code && *adr->code) g_string_append_printf (gstr, "%s
", adr->code); + if (adr->country && *adr->country) g_string_append_printf (gstr, "%s
", adr->country); - g_string_append_printf (gstr, ""); + g_string_append_printf (gstr, "%s
%s:", _("map"), html_label); + } + else + { + g_string_append_printf (gstr, "%s:
%s", html_label, _("map")); + + if (adr->po && *adr->po) g_string_append_printf (gstr, "%s
", adr->po); + if (adr->ext && *adr->ext) g_string_append_printf (gstr, "%s
", adr->ext); + if (adr->street && *adr->street) g_string_append_printf (gstr, "%s
", adr->street); + if (adr->locality && *adr->locality) g_string_append_printf (gstr, "%s
", adr->locality); + if (adr->region && *adr->region) g_string_append_printf (gstr, "%s
", adr->region); + if (adr->code && *adr->code) g_string_append_printf (gstr, "%s
", adr->code); + if (adr->country && *adr->country) g_string_append_printf (gstr, "%s
", adr->country); + + g_string_append_printf (gstr, ""); + } } if (adr) e_contact_address_free (adr); @@ -390,11 +427,25 @@ { char *value = e_text_to_html (str, html_flags); - g_string_append_printf (gstr, ""); - if (icon) - g_string_append_printf (gstr, "", icon); - g_string_append_printf (gstr, "%s: %s", label, value); + if(gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL) + { + g_string_append_printf (gstr, "%s %s:", value, label); + g_string_append_printf (gstr, ""); + if (icon) + g_string_append_printf (gstr, "", icon); + else /* This is the last td for RTL as td's are reversed, so put a filler one */ + g_string_append_printf (gstr, " ", icon); + } + else + { + g_string_append_printf (gstr, ""); + if (icon) + g_string_append_printf (gstr, "", icon); + g_string_append_printf (gstr, "%s: %s", label, value); + + } + g_free (value); } @@ -494,6 +545,7 @@ { GString *accum; GList *email_list, *l, *email_attr_list, *al; + gboolean is_rtl = (gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL); #ifdef HANDLE_MAILTO_INTERNALLY int email_num = 0; #endif @@ -529,10 +581,19 @@ if (accum->len) { #ifdef HANDLE_MAILTO_INTERNALLY - gtk_html_stream_printf (html_stream, ""); - gtk_html_stream_printf (html_stream, + if(is_rtl) + { + gtk_html_stream_printf (html_stream, + "%s %s:", + accum->str, _("Email")); + } + else + { + gtk_html_stream_printf (html_stream, ""); + gtk_html_stream_printf (html_stream, "%s: %s", _("Email"), accum->str); + } #else render_name_value (html_stream, _("Email"), accum->str, NULL, E_TEXT_TO_HTML_CONVERT_ADDRESSES | E_TEXT_TO_HTML_CONVERT_NL); @@ -621,14 +682,16 @@ html_stream = gtk_html_begin (GTK_HTML (display)); gtk_html_stream_write (html_stream, HTML_HEADER, sizeof (HTML_HEADER) - 1); - gtk_html_stream_write (html_stream, "\n", 7); - + + gboolean is_rtl = (gtk_widget_get_default_direction() == GTK_TEXT_DIR_RTL); + gtk_html_stream_printf (html_stream, "
\n", is_rtl ? " align=\"right\" " : ""); + if (contact) { const char *str; char *html; EContactPhoto *photo; - gtk_html_stream_printf (html_stream, "
"); + gtk_html_stream_printf (html_stream, "
", is_rtl ? " align=\"right\" " : ""); photo = e_contact_get (contact, E_CONTACT_PHOTO); if (!photo) photo = e_contact_get (contact, E_CONTACT_LOGO); @@ -638,7 +701,7 @@ e_contact_photo_free (photo); } - gtk_html_stream_printf (html_stream, "\n"); + gtk_html_stream_printf (html_stream, "\n", is_rtl ? " align=\"right\" " : ""); str = e_contact_get_const (contact, E_CONTACT_FILE_AS); if (!str) @@ -664,7 +727,7 @@ gtk_html_stream_printf (html_stream, "
\n"); } - gtk_html_stream_write (html_stream, "\n", 15); + gtk_html_stream_printf (html_stream, "
\n"); gtk_html_end (GTK_HTML (display), html_stream, GTK_HTML_STREAM_OK); }