http://bugs.winehq.org/show_bug.cgi?id=12693
--- Comment #8 from Igor Tarasov tarasov.igor@gmail.com 2008-05-09 17:55:48 --- Finally, I've found where the bug is:
It is in DrawStatusTextW, here:
if (*text == '\t') { text++; align = DT_CENTER; if (*text == '\t') { text++; align = DT_RIGHT; } }
http://source.winehq.org/source/dlls/comctl32/commctrl.c#L538
As you see, it only checks if the first character is \t or the first two of them are. Test it with control spy and you'll see, that if you put tab or double tab at the beginning of the string it will align text, but it won't if the tab occurs further in string. However, there are no such restrictions in specification (see above).
As a test cases these should work this way:
L\tC\tR > |L C R| L\t\tR > |L R| \tC\tR > | C R|
My knowledge of C is very limited, and currently I am not sure if I am able to fix this (or rather that my fix would work well and won't spoil anything).