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

commits at source.squeak.org commits at source.squeak.org
Wed Aug 31 11:13:10 UTC 2016


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

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

Name: Morphic-tfel.1305
Author: tfel
Time: 31 August 2016, 11:11:43.198793 am
UUID: 556342b2-8907-b240-ba46-ac3638687c87
Ancestors: Morphic-tfel.1304

remove ugly owner hacks when we draw a new sketch and add its flex shell

=============== Diff against Morphic-tfel.1304 ===============

Item was changed:
  ----- Method: Morph>>addFlexShell (in category 'rotate scale and flex') -----
  addFlexShell
  	"Wrap a rotating and scaling shell around this morph."
  
+ 	| oldHalo myWorld flexMorph anIndex |
- 	| oldHalo flexMorph myWorld anIndex morphOwner |
  
- 	myWorld := self world.
  	oldHalo:= self halo.
+ 	myWorld := self world.
+ 	self owner
+ 		ifNil: [flexMorph := self newTransformationMorph asFlexOf: self]
+ 		ifNotNil: [:myOwner |
+ 			anIndex := myOwner submorphIndexOf: self.
+ 			flexMorph := self newTransformationMorph asFlexOf: self.
+ 			myOwner addMorph: flexMorph asElementNumber: anIndex.
+ 			myWorld ifNotNil: [myWorld startSteppingSubmorphsOf: flexMorph]].
- 	self owner ifNotNil:[ morphOwner := self owner]
- 					ifNil:[morphOwner := self currentWorld].
- 	
- 	anIndex := morphOwner  submorphIndexOf: self.
- 	morphOwner  addMorph: (flexMorph := self newTransformationMorph asFlexOf: self)
- 		asElementNumber: anIndex.
  	self transferStateToRenderer: flexMorph.
  	oldHalo ifNotNil: [oldHalo setTarget: flexMorph].
- 	myWorld ifNotNil: [myWorld startSteppingSubmorphsOf: flexMorph].
  
  	^ flexMorph!

Item was changed:
  ----- Method: PasteUpMorph>>makeNewDrawing:at: (in category 'world menu') -----
  makeNewDrawing: evt at: aPoint
  	"make a new drawing, triggered by the given event, with the painting area centered around the given point"
  
  	| w newSketch newPlayer sketchEditor aPalette rect aPaintBox aPaintTab aWorld |
  	w := self world.
  	w assureNotPaintingElse: [^ self].
  	rect := self paintingBoundsAround: aPoint.
  	aPalette := self standardPalette.
  	aPalette ifNotNil: [aPalette showNoPalette; layoutChanged].
  	w prepareToPaint.
  
  	newSketch := self drawingClass new.
  	Smalltalk at: #UnscriptedPlayer ifPresent:[:aClass|
  		newSketch player: (newPlayer := aClass newUserInstance).
  		newPlayer costume: newSketch.
  	].
  	newSketch nominalForm: (Form extent: rect extent depth: w assuredCanvas depth).
  	newSketch bounds: rect.
  	sketchEditor := SketchEditorMorph new.
  	w addMorphFront: sketchEditor.
  	sketchEditor initializeFor: newSketch inBounds: rect pasteUpMorph: self.
  	sketchEditor
+ 		afterNewPicDo: [:aForm :aRect | | tfx whereToPresent |
- 		afterNewPicDo: [:aForm :aRect | | tfx ownerBeforeHack whereToPresent |
  			whereToPresent := self presenter.
  			newSketch form: aForm.
  			tfx := self transformFrom: w.
  			newSketch position: (tfx globalPointToLocal: aRect origin).
  			newSketch rotationStyle: sketchEditor rotationStyle.
  			newSketch forwardDirection: sketchEditor forwardDirection.
  
- 			ownerBeforeHack := newSketch owner.	"about to break the invariant!!!!"
- 			newSketch privateOwner: self. "temp for halo access"
  			newPlayer ifNotNil:[newPlayer setHeading: sketchEditor forwardDirection].
  			(aPaintTab := (aWorld := self world) paintingFlapTab)
  				ifNotNil:[aPaintTab hideFlap]
  				ifNil:[(aPaintBox := aWorld paintBox) ifNotNil:[aPaintBox delete]].
  
- 			"Includes  newSketch rotationDegrees: sketchEditor forwardDirection."
- 			newSketch privateOwner: ownerBeforeHack. "probably nil, but let's be certain"
- 
  			self addMorphFront: (newPlayer ifNil:[newSketch] ifNotNil:[newPlayer costume]).
  			w startSteppingSubmorphsOf: newSketch.
  			whereToPresent drawingJustCompleted: newSketch]
  		 ifNoBits:[
  			(aPaintTab := (aWorld := self world) paintingFlapTab)
  				ifNotNil:[aPaintTab hideFlap]
  				ifNil:[(aPaintBox := aWorld paintBox) ifNotNil:[aPaintBox delete]].
  			aPalette ifNotNil: [aPalette showNoPalette].]!



More information about the Squeak-dev mailing list