Red Hat Bugzilla – Bug 157283
Incorrect cursor navigation & deletion for composite glyphs in indic languages
Last modified: 2007-11-30 17:11:05 EST
+++ This bug was initially created as a clone of Bug #129212 +++
Description of problem:
While inputting indic languages in the evolution mail composer,
composite glyphs and ligatures are considered as independent glyphs
during cursor navigation. For example, while moving the cursor left to
right on a single glyph composed from 4 unicode characters, the cursor
has to be moved 4 times, instead of once. Similarly, deletion happens
one unicode character at a time, instead of deleting the full glyph.
This behaviour is inconsistent with the rest of the gnome desktop
(compare to gedit).
Version-Release number of selected component (if applicable):
Steps to Reproduce:
1. Start evolution, compose new message.
2. Open the test file attached to this bug, in gedit, copy & paste
content into the composer.
3. Navigate LTR on the composite character in gedit and in composer.
A single right arrow keypress is sufficient in gedit, whereas it takes
5 keypresses to navigate this string in composer.
it should take a single keypress to navigate this glyph
Deleting this composite glyph takes 5 delete keypresses, whereas a
single delete keypress works in gedit.
Tested with evolution-2.2.2-3 and gtkhtml3-3.6.2-1. The cursoring position is
ok, ie, takes only one keypress to move acorss one character. However, for
delete key, it is not working properly. Instead of deleting the compose
character in one keypress, it removes the characters which makes up the composed
character one at a time.
Re comment #2: was this with an unpatched gtkhtml3, or did you apply the patch
referred to in comment #1?
Re comment #3: it was tested with gtkhtml3 from latest dist-fc4 without the
patch from comment #1.
upstream has different implementation in the latest version of gtkhtml3, which
hasn't supported backspace_deletes_character attribute. FYI.
Tested evolution-2.2.2-5 with gtkhtml3-3.6.2-1 from dist FC4, cursoring for CJKI
is good. However, removing a character using the Delete key, it is still not
possible for bn_IN, gu_IN, hi_IN, pa_IN and ta_IN.
Please find attached a text file with all 9 locales characters.
Created attachment 114764 [details]
text file containing characters from all 9 CJKI locales
So am I right in thinking:
(i) that the patch in attachment #110708 [details] is incompatible with the upstream
gtkhtml3 in FC4?
(ii) that the current behaviour in the FC4 package is that cursor movement
works, and it is the "delete" behaviour left to be fixed?
I'm running out of time here; can this be moved from the FC4 blocker list to be
fixed in an update? Or do you have a patch for this?
Yes and Yes - it looks like the behavior is reversed. so current deletion isn't
the right way anyway because it *just* works for backspace, but not delete. it
needs to be modified according to backspace_deletes_character attribute.
I'm now working on this. but I yet have no patch to submit now. and it's too
late to include for FC4. so it should be moved to FC4Update IMO.
Moving from FC4Blocker to FC4Update
Created attachment 114909 [details]
proposed patch for gtkhtml-3.6.2
backported a patch and modified and fix minor issues on that.
Created attachment 114965 [details]
proposed patch for gtkhtml-3.6.2
previous patch was actually old one. attaching the latest
Tested with gtkhtml3 test package containing the patch from Comment #12 and
evolution-2.2.2-7, confirm the bug has been fixed.
Navigation is ok, but Deletion is not yet ok
IMO, backspace should delete one char at a time, but delete key should delete
full unicode in one go.
Aalam, delete key seems to be working fine. Can you please recheck?
Test Result : PASS, Backspace is deleting one character at a time and Delete is
deleting one glyph at a time. Both Backspace and Delete working properly.
Nevigation and Deletion is okay. Tested with Packages and versions :
Tested on O.S. : Fedora Core Release 5.89 (Rawhide) i386.