Author: rwhitcomb Date: Tue Jan 30 16:18:23 2018 New Revision: 1822661 URL: http://svn.apache.org/viewvc?rev=1822661&view=rev Log: PIVOT-1021: Fix a problem with the updated selection after undo at the end of the document.
Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java Modified: pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java URL: http://svn.apache.org/viewvc/pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java?rev=1822661&r1=1822660&r2=1822661&view=diff ============================================================================== --- pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java (original) +++ pivot/trunk/wtk/src/org/apache/pivot/wtk/TextPane.java Tue Jan 30 16:18:23 2018 @@ -131,7 +131,7 @@ public class TextPane extends Container @Override public void undo() { node.removeRange(offset, characterCount); - setSelection(offset, 0); + changeSelection(offset); } } @@ -149,10 +149,10 @@ public class TextPane extends Container @Override public void undo() { if (offset != selectionStart) { - setSelection(offset, 0); + changeSelection(offset); } insert(removedChars.toString()); - setSelection(offset + removedChars.length(), 0); + changeSelection(offset + removedChars.length()); } } @@ -1037,6 +1037,27 @@ public class TextPane extends Container } /** + * Change the selection to the given location (and length 0), + * with checks to make sure the selection doesn't go out of bounds. + * <p> Meant to be called from {@link #undo} (that is, internally). + * + * @param start The new selection start to check and set. + * @see #setSelection(int, int) + */ + private void changeSelection(int start) { + int docCount = document.getCharacterCount(); + if (start >= 0) { + if (start >= docCount) { + setSelection(docCount - 1, 0); + } else { + setSelection(start, 0); + } + } else { + setSelection(0, 0); + } + } + + /** * Selects all text. */ public void selectAll() {