You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by "Eirik Bakke (JIRA)" <ji...@apache.org> on 2018/06/25 09:30:00 UTC

[jira] [Updated] (NETBEANS-980) Home/end/up/down do not work properly when word wrapping is enabled

     [ https://issues.apache.org/jira/browse/NETBEANS-980?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eirik Bakke updated NETBEANS-980:
---------------------------------
    Summary: Home/end/up/down do not work properly when word wrapping is enabled  (was: Home/end/up/down does not work properly when word wrapping is enabled)

> Home/end/up/down do not work properly when word wrapping is enabled
> -------------------------------------------------------------------
>
>                 Key: NETBEANS-980
>                 URL: https://issues.apache.org/jira/browse/NETBEANS-980
>             Project: NetBeans
>          Issue Type: Bug
>          Components: editor - Other, editor - Painting &amp; Printing
>    Affects Versions: 9.0
>            Reporter: Eirik Bakke
>            Priority: Major
>
> Caret movements via Home/End and arrow Up/Down keys do not work properly when text wrap (especially in "after words" mode) is enabled in the NetBeans editor.
> Specific bugs:
> 1) Pressing Home (Fn+Left Arrow on MacBooks) will bring the text caret to the beginning of the paragraph rather than to the beginning of the current wrap line (physical line).
> 2) Pressing End (Fn+Right Arrow on MacBooks) will bring the text caret to the beginning of the next wrap line instead of to the end of the current wrap line.
> 3) Pressing Up has no effect if the preceding wrap line ended before the caret's current X position.
> 4) Pressing Down will move the caret down _two_ lines if the following wrap line ended before the caret's current X position (and assuming the wrap line two lines down is longer).
> 5) Left-clicking the mouse to the right of the end of a wrap line puts the caret on the beginning of the next wrap line rather than at the end of the current (clicked) wrap line.
> The Home/End/Up/Down actions are all implemented in o.n.editor.BaseKit (UpAction/DownAction/BeginLineAction/EndLineAction).
> Bug number 1 above, for the Home action (BeginLineAction), is easy to fix (don't allow Utilities.getRowFirstNonWhite to move cursor before lineStartPos) and is unrelated to the others.
> Bugs 2-5 above all relate to what caret position is mapped to the "infinite" horizontal space that follows each wrap line. With NetBeans' current behavior, this space corresponds to a caret position directly following the last character of a wrap line. This caret position, however, is physically mapped (and painted) on the beginning of the following wrap line, which confuses the logic for the End, Up, and Down actions. I suspect that if bug 5 is fixed, then bugs 2-4 might "fix themselves" as well.
> For bug 5, I think the best solution when clicking the space beyond the end of a wrap line would be to move the caret to right _before_ the last character on the wrap line. This character is usually a space (in word wrap mode), though it could also be a hyphen or such if a more advanced word wrapping algorithm is used (proposed in the pull request for NETBEANS-977). This behavior would be similar to that of a default JTextArea, or jEdit (neither which break words on anything else than a space). Another solution would be to do like the TextEdit app on MacOS, where the cursor is placed _after_ the last character on the wrap line, but with a backwards bias such that the cursor is painted on the end of the current wrap line instead of on the beginning of the next wrap line. The latter is probably harder to implement, and is not really necessary.
> To test the above bugs:
> 1) Go to Options/Preferences->Editor->Formatting, select "All Languages" and set "Line Wrap" to "After words". Click OK.
> 2) Create a new plain text file and paste in the paragraph "SHORTWORD LOOOOOOOOOOOOONGWORD SHORTWORD LUUUUUUUUUUUNGWORD".
> 3) Resize the editor window so that the paragraph gets split into four wrap lines (one word on each wrap line--i.e. make the editor a little wider than the long word).
> 4) For each bugs 1-4 listed above, position the caret right after "...OOOOONG", then press the relevant key to test.
> 5) To test bug 5 above, click the mouse to the right of the first, second, or third wrap line.
> Tested in NetBeans 9.0 rc1.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists