Bug 129554 - all-headers display should always use direction=ltr
Summary: all-headers display should always use direction=ltr
Alias: None
Product: kmail
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR normal (vote)
Target Milestone: ---
Assignee: kdepim bugs
Depends on:
Reported: 2006-06-21 09:47 UTC by Levy, Chen
Modified: 2007-09-14 12:17 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:

Allways use ltr for all-headers dispaly (1.01 KB, patch)
2006-06-21 09:52 UTC, Levy, Chen

Note You need to log in before you can comment on or make changes to this bug.
Description Levy, Chen 2006-06-21 09:47:02 UTC
Version:           1.9.3 (using KDE KDE 3.5.3)
Installed from:    Ubuntu Packages
OS:                Linux

In brief
With Right-to-Left (rtl) languages all-headers display of a message is hard to parse visually.

The source of the problem
When KMail displays all-headers of a message, it set the headers directionality like this:

QString dir = QApplication::reverseLayout() ? "rtl" : "ltr" ;

So with rtl languages the headers are displayed as r2l text.
However none of the headers are passed through i18n(), and thus the result is Latin headers whit the direction of a r2l language. This combination is very hard to parse visually.

Note that not using i18n() for all-headers display, is the right thing to do. Typically a user asks for all-headers to debug a mail problem, and wants to be as close to the mail protocols as possible.

The solution
When displaying all-headers, always use ltr as direction, regardless of QApplication::reverseLayout().
Comment 1 Levy, Chen 2006-06-21 09:52:45 UTC
Created attachment 16737 [details]
Allways use ltr for all-headers dispaly

I suspect that the <dir/> wrapping is not needed inside the if statement.
However, I kept it in place so the change will be minimal.
Comment 2 Ingo Klöcker 2006-06-21 23:56:07 UTC
SVN commit 553736 by kloecker:

Fix bug 129554 (all-headers display should always use direction=ltr)

Patch by Chen Levy. Thanks.

BUG: 129554

 M  +6 -2      headerstyle.cpp  

--- branches/KDE/3.5/kdepim/kmail/headerstyle.cpp #553735:553736
@@ -247,15 +247,19 @@
       dateString = message->dateStr();
-    QString headerStr = QString("<div class=\"header\" dir=\"%1\">").arg(dir);
+    QString headerStr;
     if ( strategy->headersToDisplay().isEmpty()
          && strategy->defaultPolicy() == HeaderStrategy::Display ) {
-      // crude way to emulate "all" headers:
+      // crude way to emulate "all" headers - Note: no strings have
+      // i18n(), so direction should always be ltr.
+      headerStr= QString("<div class=\"header\" dir=\"ltr\">");
       headerStr += formatAllMessageHeaders( message );
       return headerStr + "</div>";
+    headerStr = QString("<div class=\"header\" dir=\"%1\">").arg(dir);
     //case HdrLong:
     if ( strategy->showHeader( "subject" ) )
       headerStr += QString("<div dir=\"%1\"><b style=\"font-size:130%\">" +