In bug 305798, we made the visual position of the caret be the base for any cart movement, even if this position is away from the logical entry point. Since then, however, we introduced several cases where MoveCaret() is used for logical (not visual) movement. In these cases, the movement should be based on the logical position of the caret, regardless of where it's visually displayed. The upcoming testcase demonstrates two such cases, using shift+arrow selection (which is a logical operation when bidi.edit.caret_movement_style is set to its default value of 2), and ctrl+del (forward word deletion, which is always a logical operation, following the fix for bug 344226).
Created attachment 235237 [details] testcase This testcase demonstrates two occurrences of the problem. Instructions are included.
Created attachment 235238 [details] [diff] [review] patch This restricts the fix for bug 305798 to the cases where we want visual movement, and restores the previous logic in the cases where we're doing logical movement.
Assignee: nobody → uriber
Status: NEW → ASSIGNED
Attachment #235238 - Flags: review?(smontagu)
Attachment #235238 - Flags: review?(smontagu) → review+
Attachment #235238 - Flags: superreview?(roc)
Attachment #235238 - Flags: superreview?(roc) → superreview+
Checked in: Checking in layout/generic/nsSelection.cpp; /cvsroot/mozilla/layout/generic/nsSelection.cpp,v <-- nsSelection.cpp new revision: 3.260; previous revision: 3.259 done
Status: ASSIGNED → RESOLVED
Last Resolved: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla1.9alpha
Component: Layout: BiDi Hebrew & Arabic → Layout: Text
QA Contact: layout.bidi → layout.fonts-and-text
You need to log in before you can comment on or make changes to this bug.