class: EditTextView
authorClaus Gittinger <cg@exept.de>
Mon, 11 Nov 2013 21:43:18 +0100
changeset 4826 ee17c37a8012
parent 4825 2be4bdbfeef8
child 4827 243957c13134
child 4856 26db89c55340
class: EditTextView changed: #doKeyPress:x:y: combination of autoIndent and st80 cursor mode.
EditTextView.st
--- a/EditTextView.st	Sat Nov 09 04:26:01 2013 +0000
+++ b/EditTextView.st	Mon Nov 11 21:43:18 2013 +0100
@@ -12,128 +12,128 @@
 "{ Package: 'stx:libwidg' }"
 
 TextView subclass:#EditTextView
-        instanceVariableNames:'cursorLine cursorVisibleLine cursorCol cursorShown
-                prevCursorState readOnly modifiedChannel fixedSize exceptionBlock
-                cursorFgColor cursorBgColor cursorNoFocusFgColor cursorType
-                cursorTypeNoFocus typeOfSelection lastAction replacing
-                showMatchingParenthesis hasKeyboardFocus acceptAction lockUpdates
-                tabMeansNextField autoIndent insertMode editMode trimBlankLines
-                wordWrap replacementWordSelectStyle acceptChannel acceptEnabled
-                st80Mode disableIfInvisible cursorMovementWhenUpdating learnMode
-                learnedMacro cursorLineHolder cursorColHolder tabRequiresControl
-                undoSupport lastStringFromReplaceForNextSearch
-                lastReplacementInfo completionSupport codeAspectHolder'
-        classVariableNames:'DefaultCursorForegroundColor DefaultCursorBackgroundColor
-                DefaultCursorType DefaultCursorNoFocusForegroundColor
-                DefaultCursorTypeNoFocus LastColumnNumberForSort Macros'
-        poolDictionaries:''
-        category:'Views-Text'
+	instanceVariableNames:'cursorLine cursorVisibleLine cursorCol cursorShown
+		prevCursorState readOnly modifiedChannel fixedSize exceptionBlock
+		cursorFgColor cursorBgColor cursorNoFocusFgColor cursorType
+		cursorTypeNoFocus typeOfSelection lastAction replacing
+		showMatchingParenthesis hasKeyboardFocus acceptAction lockUpdates
+		tabMeansNextField autoIndent insertMode editMode trimBlankLines
+		wordWrap replacementWordSelectStyle acceptChannel acceptEnabled
+		st80Mode disableIfInvisible cursorMovementWhenUpdating learnMode
+		learnedMacro cursorLineHolder cursorColHolder tabRequiresControl
+		undoSupport lastStringFromReplaceForNextSearch
+		lastReplacementInfo completionSupport codeAspectHolder'
+	classVariableNames:'DefaultCursorForegroundColor DefaultCursorBackgroundColor
+		DefaultCursorType DefaultCursorNoFocusForegroundColor
+		DefaultCursorTypeNoFocus LastColumnNumberForSort Macros'
+	poolDictionaries:''
+	category:'Views-Text'
 !
 
 Object subclass:#EditAction
-        instanceVariableNames:'userFriendlyInfo'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'userFriendlyInfo'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditAction subclass:#DeleteRange
-        instanceVariableNames:'line1 col1 line2 col2'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'line1 col1 line2 col2'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditAction subclass:#DeleteCharacters
-        instanceVariableNames:'line col1 col2'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'line col1 col2'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 Object subclass:#EditMode
-        instanceVariableNames:''
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditMode subclass:#InsertAndSelectMode
-        instanceVariableNames:''
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView::EditMode
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView::EditMode
 !
 
 EditTextView::EditMode subclass:#InsertMode
-        instanceVariableNames:''
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView::EditMode
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView::EditMode
 !
 
 EditTextView::EditMode subclass:#OverwriteMode
-        instanceVariableNames:''
-        classVariableNames:'InsertMode OverwriteMode InsertAndSelectMode'
-        poolDictionaries:''
-        privateIn:EditTextView::EditMode
+	instanceVariableNames:''
+	classVariableNames:'InsertMode OverwriteMode InsertAndSelectMode'
+	poolDictionaries:''
+	privateIn:EditTextView::EditMode
 !
 
 Query subclass:#ExecutingMacroQuery
-        instanceVariableNames:''
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 Object subclass:#LastReplacementInfo
-        instanceVariableNames:'lastReplacement lastStringToReplace lastReplaceWasMatch
-                lastReplaceIgnoredCase stillCollectingInput previousReplacements'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'lastReplacement lastStringToReplace lastReplaceWasMatch
+		lastReplaceIgnoredCase stillCollectingInput previousReplacements'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditAction subclass:#PasteString
-        instanceVariableNames:'line col string selected'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'line col string selected'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditAction subclass:#ReplaceCharacter
-        instanceVariableNames:'line col character'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'line col character'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditAction subclass:#ReplaceCharacters
-        instanceVariableNames:'line col1 col2 characters'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'line col1 col2 characters'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditAction subclass:#ReplaceContents
-        instanceVariableNames:'text'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'text'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditAction subclass:#ReplaceLine
-        instanceVariableNames:'line text'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'line text'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 EditTextView::EditAction subclass:#ReplaceLines
-        instanceVariableNames:'line text'
-        classVariableNames:''
-        poolDictionaries:''
-        privateIn:EditTextView
+	instanceVariableNames:'line text'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:EditTextView
 !
 
 !EditTextView class methodsFor:'documentation'!
@@ -5075,7 +5075,7 @@
                     ]
                 ]
             ] ifTrue:[
-                |left right|
+                |left right oldIndent|
 
                 "/ old version just unselected ...
                 "/ self unselect; makeCursorVisible.
@@ -5105,7 +5105,13 @@
                                     i := i - 4.
                                 ].
                             ].
-                            self indentFromLine:cursorLine toLine:cursorLine by:i.
+                            oldIndent := self leftIndentOfLine:cursorLine.
+                            self indentFromLine:cursorLine toLine:cursorLine by:(i-oldIndent).
+                            self st80EditMode ifTrue:[
+                                (self listAt:cursorLine) size < i ifTrue:[
+                                    self insertStringAtCursor:(String new:((i-oldIndent) max:0)).
+                                ].
+                            ].
                             self cursorCol:(i+1 max:1)
                         ].
                     ]
@@ -8501,10 +8507,10 @@
 !EditTextView class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.596 2013-11-08 11:37:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.597 2013-11-11 20:43:18 cg Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.596 2013-11-08 11:37:06 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libwidg/EditTextView.st,v 1.597 2013-11-11 20:43:18 cg Exp $'
 ! !