A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1718.mcz ==================== Summary ==================== Name: Morphic-ct.1718 Author: ct Time: 24 January 2021, 5:22:59.352273 pm UUID: f630cc0f-15e2-5642-94f6-6277bb8d7bd4 Ancestors: Morphic-mt.1710 PluggableTextMorph: Fixes #selectAll to keep the current scroll position intact, as it is best practice in most modern editor implementations such as Chromium. I'm very open to refactoring proposals, but otherwise I don't care if you merge this as-is. :-) =============== Diff against Morphic-mt.1710 =============== Item was changed: ----- Method: Editor>>selectAll: (in category 'typing/selecting keys') ----- selectAll: aKeyboardEvent "select everything, invoked by cmd-a. 1/17/96 sw" self insertAndCloseTypeIn. self selectFrom: 1 to: self string size. + morph skipOnceScrollSelectionIntoView. ^ true! Item was changed: ----- Method: PluggableTextMorph>>scrollSelectionIntoView: (in category 'editor access') ----- scrollSelectionIntoView: event "Scroll my text into view. Due to line composition mechanism, we must never use the right of a character block because the lines last character block right value always comes from a global container and is *not* line specific." self rememberSelectionInterval. + (self valueOfProperty: #skipScrollSelectionIntoView ifAbsent: [false]) ifTrue: [ + self removeProperty: #skipScrollSelectionIntoView. + ^ true]. + textMorph editor hasSelection ifFalse: [self scrollToShow: (textMorph editor startBlock withWidth: 1)] ifTrue: [ self scrollToShow: (textMorph editor startBlock topLeft corner: textMorph editor stopBlock bottomLeft). self scrollToShow: (textMorph editor pointBlock withWidth: 1). "Ensure text cursor visibility."]. ^ true! Item was added: + ----- Method: TextMorph>>skipOnceScrollSelectionIntoView (in category 'as yet unclassified') ----- + skipOnceScrollSelectionIntoView + + self owner owner setProperty: #skipScrollSelectionIntoView toValue: true.! |
Hi :-) -1 for adding #skipOnceScrollSelectionIntoView this way What's exactly the benefit of putting this extra effort into the implementation? Under which circumstances is that extra scrolling a distraction? What do you want to do after "select all"? For all that we know, it might be accidental in other systems. :-) Yet, I do like "visual stability" for such interactions. Maybe we can find a better "rule" to achieve that. Or maybe we can establish a paramter to "selectFrom:to:". There is already "invisible selection". Maybe we can add "stableSelection"? Or something like that. Best, Marcel P.S.: All these "skip once if"-blah rules with little to no benefits can quickly blow up the code base. ;-)
|
Hi Marcel,
sorry, somehow I must have lost track of this discussion. :-) > What's exactly the benefit of putting this extra effort into the > implementation? Under which circumstances is that extra scrolling a > distraction? What do you want to do after "select all"? For all that we > know, it might be accidental in other systems. :-) I use this quite often in non-Squeak systems to copy/backup a text somewhere else but I want to keep reading it from the latest position. If the scrollbar jumps to another position in this case, I need to scroll back to the original position. This can, especially in longer texts, be a very tedious task ... Just stumbled again upon this. Another argument might be that neither jumping to the beginning nor jumping to the end of the text makes ultimate sense to me. > Yet, I do like "visual stability" for such interactions. Maybe we can find > a better "rule" to achieve that. Or maybe we can establish a paramter to > "selectFrom:to:". There is already "invisible selection". Maybe we can add > "stableSelection"? Or something like that. As mentioned earlier, I am very open to alternative implementations. :-) I'm not very deep in the editor's implementation, would you maybe like to propose a concrete pattern? Best, Christoph ----- Carpe Squeak! -- Sent from: http://forum.world.st/Squeak-Dev-f45488.html
Carpe Squeak!
|
Free forum by Nabble | Edit this page |