[Pkg] The Trunk: Morphic-ul.1323.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 27 01:20:08 UTC 2017


Levente Uzonyi uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-ul.1323.mcz

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

Name: Morphic-ul.1323
Author: ul
Time: 27 February 2017, 2:19:54.493351 am
UUID: 61ac3aed-c91d-455c-a890-7a5a8eeb4fb8
Ancestors: Morphic-eem.1322

- omit ifAbsent from #index* sends when the default value, 0 would used

=============== Diff against Morphic-eem.1322 ===============

Item was changed:
  ----- Method: Editor>>beginningOfParagraph: (in category 'private') -----
  beginningOfParagraph: position
  	^ (self string
  		lastIndexOf: Character cr
+ 		startingAt: position) + 1.!
- 		startingAt: position
- 		ifAbsent: [ 0 ]) + 1.!

Item was changed:
  ----- Method: FontChooserTool>>selectedFontIndex (in category 'font list') -----
  selectedFontIndex
  	| font textStyleName family |
  	selectedFontIndex ifNotNil: [^selectedFontIndex].
  	selectedFontIndex := 0.
  	font := (getSelector isSymbol and:[target notNil])
  		ifTrue:[target perform: getSelector]
  		ifFalse:[getSelector].
  	font ifNotNil:[
  		emphasis := font emphasis.
  		pointSize := font pointSize.
  		textStyleName := font textStyleName.
  		family := self fontList detect:[:f | f = textStyleName] ifNone:[].
  	].
+ 	selectedFontIndex := self fontList indexOf: family.
- 	selectedFontIndex := self fontList indexOf: family ifAbsent:[0].
  	self selectedFontIndex: selectedFontIndex.
  	^selectedFontIndex!

Item was changed:
  ----- Method: Morph>>morphPreceding: (in category 'structure') -----
  morphPreceding: aSubmorph
  	"Answer the morph immediately preceding aSubmorph, or nil if none"
  
+ 	| index |
+ 	(index := submorphs indexOf: aSubmorph) > 1 ifTrue: [
+ 		^submorphs at: index - 1 ].
+ 	^nil!
- 	| anIndex |
- 	anIndex := submorphs indexOf: aSubmorph ifAbsent: [^ nil].
- 	^ anIndex > 1
- 		ifTrue:
- 			[submorphs at: (anIndex - 1)]
- 		ifFalse:
- 			[nil]!

Item was changed:
  ----- Method: TextEditor>>cursorHome: (in category 'nonediting/nontyping keys') -----
  cursorHome: aKeyboardEvent 
  
  	"Private - Move cursor from position in current line to beginning of
  	current line. If control key is pressed put cursor at beginning of text"
  
  	| string |
  
  	string := paragraph text string.
  	self
  		moveCursor: [ :position | Preferences wordStyleCursorMovement
  				ifTrue:[
  					(paragraph lines at:(paragraph lineIndexOfCharacterIndex: position)) first]
  				ifFalse:[
  					(string
  						lastIndexOfAnyOf: CharacterSet crlf
+ 						startingAt: position - 1) + 1]]
- 						startingAt: position - 1
- 						ifAbsent:[0]) + 1]]
  		forward: false
  		event: aKeyboardEvent
  		specialBlock: [:dummy | 1].
  	^true!

Item was changed:
  ----- Method: TextEditor>>encompassLine: (in category 'new selection') -----
  encompassLine: anInterval
  	"Return an interval that encompasses the entire line"
  	| string left right |
  	string := paragraph text string.
+ 	left := (string lastIndexOfAnyOf: CharacterSet crlf startingAt: anInterval first - 1) + 1.
- 	left := (string lastIndexOfAnyOf: CharacterSet crlf startingAt: anInterval first - 1 ifAbsent:[0]) + 1.
  	right := (string indexOfAnyOf: CharacterSet crlf startingAt: anInterval last + 1 ifAbsent: [string size + 1]) - 1.
  	^left to: right!

Item was changed:
  ----- Method: TextEditor>>querySymbol: (in category 'typing/selecting keys') -----
  querySymbol: aKeyboardEvent
  	"Invoked by Ctrl-q to query the Symbol table and display alternate symbols."
  
  	| hintText lastOffering offering |
  	(self isTypingIn not or: [self history current type ~= #query])
  		ifTrue: [
  			self closeTypeIn.
  			self openTypeIn.
  			self selectPrecedingIdentifier.
  			self closeTypeIn].
  	
  	self openTypeInFor: #query.
  	
  	hintText := self history current contentsBefore string.
  	hintText := hintText copyFrom: (hintText
  		lastIndexOfAnyOf: Character separators, '#'
+ 		startingAt: hintText size) + 1 to: hintText size.
- 		startingAt: hintText size ifAbsent: [0])+1 to: hintText size.
  	self selectInvisiblyFrom: self history current intervalBefore first to: self stopIndex-1.
  	lastOffering := self selection string.
  	lastOffering := (lastOffering copyReplaceAll: ':  ' with: ':') withBlanksTrimmed.
  
  	"Only offer suggestions for not-empty tokens."
  	hintText ifEmpty: [morph flash. self closeTypeIn. ^ true].
  	offering := Symbol thatStarts: hintText skipping: lastOffering.
  	offering ifNil: [offering := Symbol thatStarts: hintText skipping: nil].
  	offering ifNil: [morph flash. self closeTypeIn. ^ true].
  	
  	"Add some nice spacing to the suggestion."
  	offering := offering copyReplaceAll: ':' with: ':  '.
  	offering last = Character space ifTrue: [offering := offering allButLast].
  	
  	"Insert the suggestions. (Note that due to previous selection, things will be overwritten and not appended.)"
  	self typeAhead nextPutAll: offering.
  
  	^ false!

Item was changed:
  ----- Method: TextEditor>>saveContentsInFile (in category 'menu messages') -----
  saveContentsInFile
  	"Save the receiver's contents string to a file, prompting the user for a file-name.  Suggest a reasonable file-name."
  
  	| fileName stringToSave parentWindow labelToUse suggestedName |
  	stringToSave := paragraph text string.
  	stringToSave size = 0 ifTrue: [^self inform: 'nothing to save.'].
  	parentWindow := model dependents 
  				detect: [:dep | dep isKindOf: SystemWindow]
  				ifNone: [nil].
  	labelToUse := parentWindow ifNil: ['Untitled']
  				ifNotNil: [parentWindow label].
  	suggestedName := nil.
  	#(#('Decompressed contents of: ' '.gz')) do: 
  			[:leaderTrailer | | lastIndex | 
  			"can add more here..."
  
  			(labelToUse beginsWith: leaderTrailer first) 
  				ifTrue: 
  					[suggestedName := labelToUse copyFrom: leaderTrailer first size + 1
  								to: labelToUse size.
  					(labelToUse endsWith: leaderTrailer last) 
  						ifTrue: 
  							[suggestedName := suggestedName copyFrom: 1
  										to: suggestedName size - leaderTrailer last size]
  						ifFalse: 
+ 							[lastIndex := suggestedName lastIndexOf: $..
+ 							lastIndex > 1
+ 								ifTrue: [suggestedName := suggestedName copyFrom: 1 to: lastIndex - 1]]]].
- 							[lastIndex := suggestedName lastIndexOf: $. ifAbsent: [0].
- 							(lastIndex = 0 or: [lastIndex = 1]) 
- 								ifFalse: [suggestedName := suggestedName copyFrom: 1 to: lastIndex - 1]]]].
  	suggestedName ifNil: [suggestedName := labelToUse , '.text'].
  	fileName := UIManager default request: 'File name?'
  				initialAnswer: suggestedName.
  	fileName isEmptyOrNil 
  		ifFalse: 
  			[(FileStream newFileNamed: fileName)
  				nextPutAll: stringToSave;
  				close]!

Item was changed:
  ----- Method: TextMorph>>anchorMorph:at:type: (in category 'anchors') -----
  anchorMorph: aMorph at: aPoint type: anchorType
  	| relPt index newText block |
  	aMorph owner == self ifTrue:[self removeMorph: aMorph].
  	aMorph textAnchorType: nil.
  	aMorph relativeTextAnchorPosition: nil.
  	self addMorphFront: aMorph.
  	aMorph textAnchorType: anchorType.
  	aMorph relativeTextAnchorPosition: nil.
  	anchorType == #document ifTrue:[^self].
  	relPt := self transformFromWorld globalPointToLocal: aPoint.
  	index := (self paragraph characterBlockAtPoint: relPt) stringIndex.
  	newText := Text string: (String value: 1) attribute: (TextAnchor new anchoredMorph: aMorph).
  	anchorType == #inline ifTrue:[
  		self paragraph replaceFrom: index to: index-1 with: newText displaying: false.
  	] ifFalse:[
  		index := index min: paragraph text size.
+ 		index := paragraph text string lastIndexOf: Character cr startingAt: index.
- 		index := paragraph text string lastIndexOf: Character cr startingAt: index ifAbsent:[0].
  		block := paragraph characterBlockForIndex: index+1.
  		aMorph relativeTextAnchorPosition: (relPt x - bounds left) @ (relPt y - block top ).
  		self paragraph replaceFrom: index+1 to: index with: newText displaying: false.
  	].
  	self fit.!



More information about the Packages mailing list