Bernhard, will you commit it? I don't see a problem at the moment.
Then Dov can work on top of that with the RTL patch.
Stefan
Am 01.06.2008 um 21:29 schrieb Bernhard Roider:
Dov Feldstern schrieb:
Bernhard Roider wrote:
Hello Stefan,
today i finally found some time to investigate the problem we
discussed at the beginning of march concerning the completion
list: rtl text does not work and icons are not displayed for math
symbols.
Here is a patch that solves that issue for me using qt 4.2.3.
There are two things that caused the problem:
1. QCompleter::setModel() changed the item delegates internally,
so the specialized ones vanished
2. item delegates for columns are not used --> qt bug?
The attached patch solves both issues so that it works with my qt
version. It should be tested for newer versions of qt.
...
bernhard
Hi!
What exactly is the problem with RTL completion that this patch is
trying to solve? Can you separate out the part dealing with RTL
from the rest of the patch?
Without your patch, I'm seeing (Linux, Qt 4.2.1) RTL completion
behave correctly, except for the fact that the inline completion
(the grayed out part) is reversed; the list of completions, though,
behaves correctly.
With your patch applied, also the strings in the completions list
are reversed.
Applying the attached (very complicated ;) ) patch *instead* of
yours fixes the problem of the inlined strings, without adversely
affecting the completions list.
I believe that what's happening is this: the completions list is
presumably getting the strings in "logical" order (the way they're
held in memory). When the strings are painted (both in the list and
inlined), since they are being painted as an entire string at once
(and not one character at a time, as we normally do with RTL text)
Qt is applying its own bidi algorithm, and thus the strings are
painted correctly, *provided* that the strings are really composed
of true RTL characters (Qt does not know about our marking text as
RTL, it only knows if text is RTL or not based on the unicode
values). You guys were probably testing the RTL capabilities with
Latin characters, so Qt was *not* reversing the strings, and thus
the strings appeared to you to be painted backwards, which is why
you were applying an extra reversal.
Your guess is correct. With my patch the completion list works for
qt 4.2 as it does for higher versions, that is
1. display the icons for math symbols
2. reverse the strings in the list if they are rtl.
I'm not sure whether locale settings affect this or not, but I
think that they don't, as long as there is a *legal* locale setting.
In summary, I think that the reversals should be removed, as in the
attached patch. If most of Bernhard's patch is still relevant for
non-RTL issues, then the RTL-specific issues should be removed from
it, as well.
Stefan, will you take a look at this?
Bernhard
To be sure, this solution isn't perfect, because we're being
inconsistent by letting Qt do some of the bidi work, and doing some
of it ourselves; and this becomes visible precisely in the
pathological cases where there's a difference between us and Qt,
such as Latin text which we mark as RTL; but for normal RTL usage,
I believe the reversals should *not* be done.
Dov