Description of problem: When press Up/Down key to move the cursor up/down, the cursor should keeps the current column if the above/below line has the same length of text or more. but the cursor goes to the top of line or the end of line. Version-Release number of selected component (if applicable): 1.5.0.4-3 How reproducible: always Steps to Reproduce: 1.move the cursor up/down on the textarea. 2. 3. Actual results: the cursor is moved to the top of line or the end of line. Expected results: should be the same column if the moved line has same length or more. Additional info: this issue is gone if I run firefox with MOZ_DISABLE_PANGO=1.
I can reproduce the bug as well.
Created attachment 135207 [details] proposed patch after some debugging, this issue was introduced by the misuse of the return value from pango_layout_xy_to_index. after applying this patch, it works fine.
The patch has a couple of problems. Just removing that "if (found)" block completely fixes the problem.
You mean "if (!found)"? it just works without even "if (!found)" block though, I'm not quite sure what problems it has.
The problems the old patch had were that it got the direction for the context, but it should have gotten the context for the line as they could be different. Also, your getting the direction didn't actually effect the program at all since you did the same thing for both the if (dir == PANGO_DIRECTION_LTR) part and the else part. But all that said, there was no adjustment needed. Pango does the right thing with the positioning, and the return value is more informative than anything in this specific case.
Created attachment 135626 [details] Better Patch Better patch. Thanks for tracking the main issue down, tagoh!
I see. you're right. getting the direction didn't effect anything indeed. and your patch is working fine. Thanks for the clarification.
Fixed in latest versions in rawhide.