GNOME Bugzilla – Bug 262907
Incorrect cursor navigation & deletion for composite glyphs in indic languages
Last modified: 2007-08-24 15:05:17 UTC
Please fill in this template when reporting a bug, unless you know what you are doing. 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 number of selected component: 3.1.16 How reproducible: every time 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. Actual Results: A single right arrow keypress is sufficient in gedit, whereas it takes 5 keypresses to navigate this string in composer. Expected Results: it should take a single keypress to navigate this glyph Additional Information: Deleting this composite glyph takes 5 delete keypresses, whereas a single delete keypress works in gedit.
Created attachment 44066 [details] This file contains the test string
Can you please try to recreate the problem on the following versions of gtkhtml: gtkhtml2-3.6.2.0.200505251324-0.snap.novell.0.1 libgtkhtml-2.6.1-2.1 I don't see the problem while navigating the glyph in the test case you have attached. It takes just 1 key-press to navigate from LtoR OR from RtoL in the composer window. But yes, deleting this glyph by going to the end of line and pressing Backspace takes 5 keypresses to delete it completely. So some problem is still existing here that needs fixing.
That's no problem because "backspace" works for removing each vowel but "delete" should remove a composed character by one keypress. also current gtkhtml (I just looked at CVS) doesn't refer a backspace_deletes_character Pango attribute at all. it's required to determine which character should be removed by backspace. so current one looks like it *just* works.
Created attachment 46945 [details] [review] proposed patch
I've applied that patch (attachment 46945 [details] [review]) to Fedora Core gtkhtml3-3.7.5-4; should be available in tomorrow's Rawhide
adding I18N keyword. any news on this, dave? still needed?
dmalcolm: is this still missing? targetting at least to 2.5 - we have a patch here. could break the API. :-/
Navigation is ok, but Deletion is not yet ok
Moving it to 'New' based on comment #8.
Patch never hit CVS at least.
Fedora is still shipping this patch so it can't be *that* broken :-) Can we get it commited?
Seems to work okay as far as I can tell. "Okay" meaning the same as other GNOME applications. Delete removes the entire glyph, backspace removes each vowel (5 in the test case in comment #1), cursor navigation moves over the entire glyph. I don't see any API breakage. The header files modified by this patch do not get installed. A ChangeLog entry would've been nice. I had to fudge a description in a few places. Committed to trunk (revision 8543).