# HG changeset patch # User Jan Vrany # Date 1553008439 0 # Node ID e4757590c90cdfb89c6afd6b373b2b4d67c1cfeb # Parent 6777704804e1f6883a19fdb45831bc9cee0d8412 Fix assertion failure in `EditTextView` ...when: * there's a selection, * then user presses CTRL+Left (or CTRL+Right) and * then user presses CTRL+SHIFT+Left (or CTRL+SHIFT+Right). After pressing CTRL+Left (or CTRL+Right) the selection should go. Instead, it did not, cursor moved internaly as usual but not updating selection. So the cursor is not either at selection start nor at end and thus assertion fails. This commit fixes this by unselecting any text before moving cursor to previous / next word. diff -r 6777704804e1 -r e4757590c90c EditTextView.st --- a/EditTextView.st Wed Nov 28 13:16:38 2018 +0000 +++ b/EditTextView.st Tue Mar 19 15:13:59 2019 +0000 @@ -5758,8 +5758,9 @@ self addToSelectionAfter:[ self cursorToNextWord. ] - ] ifFalse:[ - self cursorToNextWord + ] ifFalse:[ + self hasSelection ifTrue:[ self unselect ]. + self cursorToNextWord. ]. ^self ]. @@ -5769,7 +5770,8 @@ self addToSelectionAfter:[ self cursorToPreviousWord. ] - ] ifFalse:[ + ] ifFalse:[ + self hasSelection ifTrue:[ self unselect ]. self cursorToPreviousWord. ]. ^self @@ -5964,7 +5966,7 @@ "Modified: / 06-02-1998 / 11:59:59 / stefan" "Modified: / 14-07-2011 / 12:08:28 / cg" - "Modified: / 11-10-2017 / 23:08:26 / Jan Vrany " + "Modified: / 19-03-2019 / 15:04:33 / Jan Vrany " ! executeKeyboardMacro:cmdMacro diff -r 6777704804e1 -r e4757590c90c tests/EditTextViewTests.st --- a/tests/EditTextViewTests.st Wed Nov 28 13:16:38 2018 +0000 +++ b/tests/EditTextViewTests.st Tue Mar 19 15:13:59 2019 +0000 @@ -91,6 +91,64 @@ "Created: / 24-02-2015 / 08:21:56 / Jan Vrany " ! +test_02a + textView contents: 'Hello, here is Smalltalk X'. + textView setCursorCol: 14. + + textViewInteractor type: #SelectWord. + self assert: textView selectionAsString = 'is'. + + textViewInteractor type: #CursorRight. + self assert: textView hasSelection not. + self assert: textView cursorCol == 15. + + "Created: / 19-03-2019 / 14:58:41 / Jan Vrany " +! + +test_02b + textView contents: 'Hello, here is Smalltalk X'. + textView setCursorCol: 14. + + textViewInteractor type: #SelectWord. + self assert: textView selectionAsString = 'is'. + + textViewInteractor type: #NextWord. + self assert: textView hasSelection not. + self assert: textView cursorCol == 16. + + "Created: / 19-03-2019 / 14:59:12 / Jan Vrany " + "Modified: / 19-03-2019 / 15:03:48 / jv" +! + +test_02c + textView contents: 'Hello, here is Smalltalk X'. + textView setCursorCol: 14. + + textViewInteractor type: #SelectWord. + self assert: textView selectionAsString = 'is'. + + textViewInteractor type: #CursorLeft. + self assert: textView hasSelection not. + self assert: textView cursorCol == 13. + + "Created: / 19-03-2019 / 15:02:18 / Jan Vrany " +! + +test_02d + textView contents: 'Hello, here is Smalltalk X'. + textView setCursorCol: 14. + + textViewInteractor type: #SelectWord. + self assert: textView selectionAsString = 'is'. + + textViewInteractor type: #PreviousWord. + self assert: textView hasSelection not. + self assert: textView cursorCol == 13. + + "Created: / 19-03-2019 / 15:02:41 / Jan Vrany " + "Modified: / 19-03-2019 / 15:04:56 / jv" +! + test_issue124_case1_01 " See https://swing.fit.cvut.cz/projects/stx-jv/ticket/124#comment:19