[squeak-dev] The Trunk: Morphic-mt.1854.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Jan 22 10:57:08 UTC 2022

Marcel Taeumel uploaded a new version of Morphic to project The Trunk:

==================== Summary ====================

Name: Morphic-mt.1854
Author: mt
Time: 22 January 2022, 11:57:02.701321 am
UUID: be7fdc12-c9c8-8040-a78a-e03ff1c7016f
Ancestors: Morphic-mt.1853

Revise latest updated to #cancelSafely. Ask the model to intervene or do extra clean-ups. Avoid sending that #textEdited: with empty contents.

Thanks to Chris (cmm) for pointing this out! See http://lists.squeakfoundation.org/pipermail/squeak-dev/2022-January/218543.html

=============== Diff against Morphic-mt.1853 ===============

Item was changed:
  ----- Method: PluggableTextMorph>>cancelSafely (in category 'menu commands') -----
+ 	"Cancel all edits by replacing the content with the original contents. Retain the undo history. The model can intervene via #okToRevertChanges, which is beneficial if all edits have already be communicated via #textEdited: so that the model can cancel its internal caches."
- 	"Cancel all edits by replacing the content with the original contents. Retain the undo history. If a model is listening to #textEdited and maybe also directly derives #getText from it, clear the edit buffer first, so that a cancel means deleting everything."
+ 	(model respondsTo: #okToRevertChanges:) ==> [model okToRevertChanges: editTextSelector]
+ 		ifFalse: [^ self].
  	self handleEdit: [
- 		self textEdited: ''.
  		textMorph editor replaceAllWith: self getText.
- 		self textEdited: textMorph contents.
  		self selectInterval: self getSelection.
+ 		self hasUnacceptedEdits: false.
+ 		self hasUserEdited: false].!
- 		self hasUnacceptedEdits: false].!

Item was changed:
  ----- Method: PluggableTextMorph>>update: (in category 'updating') -----
  update: aSymbol 
  	aSymbol ifNil: [^self].
  	aSymbol == #flash ifTrue: [^self flash].
  	aSymbol == getTextSelector
  		ifTrue: [
  			self setText: self getText.
  				ifNotNil: [self setSelection: self getSelection].
  			^ self].
  	aSymbol == getSelectionSelector 
  		ifTrue: [^self setSelection: self getSelection].
  	aSymbol == #acceptChanges ifTrue: [^ self accept].
+ 	aSymbol == #revertChanges ifTrue: [^ self cancelSafely].
- 	aSymbol == #revertChanges ifTrue: [^ self cancel].
  	(aSymbol == #autoSelect and: [getSelectionSelector notNil]) 
  			[self handleEdit: 
  					[(textMorph editor)
  						abandonChangeText; "no replacement!!"
  						setSearch: model autoSelectString;
  						findAgainNow "do not reset search string"]].
  	aSymbol == #clearUserEdits ifTrue: [^self hasUnacceptedEdits: false].
  	aSymbol == #wantToChange 
  			[self canDiscardEdits ifFalse: [^self promptForCancel].
  	aSymbol == #appendEntry 
  			[self handleEdit: [self appendEntry].
  			^self refreshWorld].
  	aSymbol == #appendEntryLater
  		ifTrue: [self handleEdit: [self appendEntry]].
  	aSymbol == #clearText 
  			[self handleEdit: [self changeText: Text new].
  			^self refreshWorld].
  	aSymbol == #bs 
  			[self handleEdit: [self bsText].
  			^self refreshWorld].
  	aSymbol == #codeChangedElsewhere 
  			[self hasEditingConflicts: true.
  			^self changed].
  	aSymbol == #saveContents
  			[^(self respondsTo: #saveContentsInFile) ifTrue: [self saveContentsInFile]].
  	aSymbol == #showContents
  			[^ self scrollToTop].

Item was added:
+ ----- Method: SearchBar>>okToRevertChanges: (in category 'user edits') -----
+ okToRevertChanges: aspect
+ 	"Clear caches since we use #textEdited: callback from view."
+ 	aspect = #searchTermSilently: ifTrue: [searchTerm := ''].
+ 	^ true!

More information about the Squeak-dev mailing list