[squeak-dev] The Trunk: Morphic-tfel.1302.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Aug 30 15:49:26 UTC 2016


Tim Felgentreff uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-tfel.1302.mcz

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

Name: Morphic-tfel.1302
Author: tfel
Time: 30 August 2016, 5:47:28.089349 pm
UUID: 654a8863-1a78-5d41-b7b6-17b545bda287
Ancestors: Morphic-mt.1301, Morphic-jl.1291

merge

=============== Diff against Morphic-mt.1301 ===============

Item was changed:
  ----- Method: Morph>>usableSiblingInstance (in category 'copying') -----
  usableSiblingInstance
  	"Return another similar morph whose Player is of the same class as mine.
  	Do not open it in the world."
  
+ 	| aName newPlayer newMorph topRenderer counter world |
- 	| aName usedNames newPlayer newMorph topRenderer |
  	(topRenderer := self topRendererOrSelf) == self 
  		ifFalse: [^topRenderer usableSiblingInstance].
  	self assuredPlayer assureUniClass.
  	newMorph := self veryDeepCopySibling.
  	newPlayer := newMorph player.
  	newPlayer resetCostumeList.
  	(aName := self knownName) isNil 
  		ifTrue: [self player notNil ifTrue: [aName := newMorph innocuousName]].
  	"Force a difference here"
+ 
+ 	aName := aName stemAndNumericSuffix at: 1. 
+ 	
+ 	world := self world ifNil: [Project current world].
+ 	(world hasProperty: #nameCounter) ifFalse: [
+ 		(world setProperty: #nameCounter toValue: Dictionary new)
+ 	].
+ 
+ 	counter := (world valueOfProperty: #nameCounter) at: aName ifAbsent: [1].
+ 	newMorph setNameTo: aName, counter.
+ 	(world valueOfProperty: #nameCounter)  at: aName put: counter + 1.
+ 
- 	aName notNil 
- 		ifTrue: 
- 			[usedNames := (self world ifNil: [OrderedCollection new]
- 						ifNotNil: [self world allKnownNames]) copyWith: aName.
- 			newMorph setNameTo: (Utilities keyLike: aName
- 						satisfying: [:f | (usedNames includes: f) not])].
  	newMorph privateOwner: nil.
  	newPlayer assureEventHandlerRepresentsStatus.
  	self presenter flushPlayerListCache.
  	^newMorph!

Item was changed:
  ----- Method: TransformationMorph>>removeFlexShell (in category 'menu') -----
  removeFlexShell
  	"Remove the shell used to make a morph rotatable and scalable."
  
  	| oldHalo unflexed pensDown myWorld refPos aPosition |
+ 	self isInWorld ifFalse: [^self].
  	refPos := self referencePosition.
  	myWorld := self world.
  	oldHalo := self halo.
  	submorphs isEmpty ifTrue: [^ self delete].
  	aPosition := (owner submorphIndexOf: self) ifNil: [1].
  	unflexed := self firstSubmorph.
  	pensDown := OrderedCollection new.
  	self allMorphsDo:  "Note any pens down -- must not be down during the move"
  		[:m | | player |
  		((player := m player) notNil and: [player getPenDown]) ifTrue:
  			[m == player costume ifTrue:
  				[pensDown add: player.
  				player setPenDown: false]]].
  	self submorphs do: [:m |
  		m position: self center - (m extent // 2).
  		owner addMorph: m asElementNumber: aPosition].
  	unflexed absorbStateFromRenderer: self.
  	pensDown do: [:p | p setPenDown: true].
  	oldHalo ifNotNil: [oldHalo setTarget: unflexed].
  	myWorld ifNotNil: [myWorld startSteppingSubmorphsOf: unflexed].
  	self delete.
  	unflexed referencePosition: refPos.
  	^ unflexed!



More information about the Squeak-dev mailing list