Bug 198759

Summary: [PATCH] wrong cursor movement between lines
Product: [Fedora] Fedora Reporter: Akira TAGOH <tagoh>
Component: firefoxAssignee: Christopher Aillon <caillon>
Status: CLOSED RAWHIDE QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: rawhideCC: aalam, behdad, eng-i18n-bugs, wtogami
Target Milestone: ---Keywords: i18n
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-09-12 02:52:16 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 150223    
Attachments:
Description Flags
proposed patch
none
Better Patch none

Description Akira TAGOH 2006-07-13 11:05:01 UTC
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.

Comment 1 Lawrence Lim 2006-07-13 11:18:19 UTC
I can reproduce the bug as well. 

Comment 2 Akira TAGOH 2006-08-30 13:37:46 UTC
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.

Comment 3 Behdad Esfahbod 2006-09-05 22:57:29 UTC
The patch has a couple of problems.

Just removing that "if (found)" block completely fixes the problem.

Comment 4 Akira TAGOH 2006-09-06 03:30:28 UTC
You mean "if (!found)"?  it just works without even "if (!found)" block though,
I'm not quite sure what problems it has.

Comment 5 Christopher Aillon 2006-09-06 07:06:11 UTC
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.

Comment 6 Christopher Aillon 2006-09-06 07:08:33 UTC
Created attachment 135626 [details]
Better Patch

Better patch.  Thanks for tracking the main issue down, tagoh!

Comment 7 Akira TAGOH 2006-09-06 10:00:00 UTC
I see. you're right. getting the direction didn't effect anything indeed. and
your patch is working fine.  Thanks for the clarification.

Comment 8 Christopher Aillon 2006-09-12 02:52:16 UTC
Fixed in latest versions in rawhide.