[squeak-dev] The Trunk: Morphic-cmm.725.mcz

commits at source.squeak.org commits at source.squeak.org
Thu May 8 16:08:51 UTC 2014


Chris Muller uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-cmm.725.mcz

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

Name: Morphic-cmm.725
Author: cmm
Time: 8 May 2014, 11:07:42.239 am
UUID: 8d7e08f0-4f57-413c-a417-82ecac09f391
Ancestors: Morphic-eem.724

Morphic, let Array class be responsible for the shared empty Array in the system.

=============== Diff against Morphic-eem.724 ===============

Item was changed:
  ----- Method: MenuMorph>>add:action: (in category 'construction') -----
+ add: aString action: aSymbolOrValuable 
- add: aString action: aSymbolOrValuable
  	"Append a menu item with the given label. If the item is selected, it will send the given selector to the default target object."
  	"Details: Note that the menu item added captures the default target object at the time the item is added; the default target can later be changed before added additional items without affecting the targets of previously added entries. The model is that each entry is like a button that knows everything it needs to perform its action."
+ 	aSymbolOrValuable isSymbol
+ 		ifTrue:
+ 			[ self
+ 				add: aString
+ 				target: defaultTarget
+ 				selector: aSymbolOrValuable
+ 				argumentList: Array empty ]
+ 		ifFalse:
+ 			[ self
+ 				add: aString
+ 				target: aSymbolOrValuable
+ 				selector: #value
+ 				argumentList: Array empty ]!
- 	aSymbolOrValuable isSymbol ifTrue:[
- 		self add: aString
- 			target: defaultTarget
- 			selector: aSymbolOrValuable
- 			argumentList: EmptyArray.
- 	] ifFalse:[
- 		self add: aString
- 			target: aSymbolOrValuable
- 			selector: #value
- 			argumentList: EmptyArray.
- 	]
- !

Item was changed:
  ----- Method: MenuMorph>>add:help:action: (in category 'construction') -----
  add: wordingString help: helpString action: aSymbol 
  	"Append a menu item with the given label. If the item is  
  	selected, it will send the given selector to the default target  
  	object."
  	"Details: Note that the menu item added captures the default  
  	target object at the time the item is added; the default target  
  	can later be changed before added additional items without  
  	affecting the targets of previously added entries. The model is 
  	that each entry is like a button that knows everything it needs 
  	to perform its action."
  	self
  		add: wordingString
  		target: defaultTarget
  		selector: aSymbol
+ 		argumentList: Array empty.
+ 	self balloonTextForLastItem:helpString!
- 		argumentList: EmptyArray.
- self balloonTextForLastItem:helpString!

Item was changed:
  ----- Method: MenuMorph>>add:target:action: (in category 'construction') -----
+ add: aString target: aTarget action: aSymbol 
+ 	self
+ 		add: aString
- add: aString target: aTarget action: aSymbol
- 	self add: aString
  		target: aTarget
  		selector: aSymbol
+ 		argumentList: Array empty!
- 		argumentList: EmptyArray
- !

Item was changed:
  ----- Method: MenuMorph>>add:target:selector: (in category 'construction') -----
+ add: aString target: anObject selector: aSymbol 
- add: aString target: anObject selector: aSymbol
  	"Append a menu item with the given label. If the item is selected, it will send the given selector to the target object."
+ 	self
+ 		add: aString
- 
- 	self add: aString
  		target: anObject
  		selector: aSymbol
+ 		argumentList: Array empty!
- 		argumentList: EmptyArray.
- !

Item was changed:
  ----- Method: MenuMorph>>addUpdating:action: (in category 'construction') -----
+ addUpdating: aWordingSelector action: aSymbol 
+ 	self
+ 		addUpdating: aWordingSelector
+ 		target: defaultTarget
+ 		selector: aSymbol
+ 		argumentList: Array empty!
- addUpdating: aWordingSelector action: aSymbol
- 
- 	self addUpdating: aWordingSelector target: defaultTarget selector: aSymbol argumentList: EmptyArray
- !

Item was changed:
  ----- Method: MenuMorph>>addUpdating:enablement:action: (in category 'construction') -----
+ addUpdating: aWordingSelector enablement: anEnablementSelector action: aSymbol 
+ 	self
+ 		addUpdating: aWordingSelector
+ 		enablementSelector: anEnablementSelector
+ 		target: defaultTarget
+ 		selector: aSymbol
+ 		argumentList: Array empty!
- addUpdating: aWordingSelector enablement: anEnablementSelector action: aSymbol
- 
- 	self addUpdating: aWordingSelector enablementSelector: anEnablementSelector target: defaultTarget selector: aSymbol argumentList: EmptyArray
- !

Item was changed:
  ----- Method: MenuMorph>>addUpdating:target:action: (in category 'construction') -----
+ addUpdating: aWordingSelector target: aTarget action: aSymbol 
+ 	self
+ 		addUpdating: aWordingSelector
+ 		target: aTarget
+ 		selector: aSymbol
+ 		argumentList: Array empty!
- addUpdating: aWordingSelector target: aTarget action: aSymbol
- 
- 	self addUpdating: aWordingSelector target: aTarget selector: aSymbol argumentList: EmptyArray
- !

Item was changed:
  ----- Method: MenuMorph>>addWithLabel:enablement:action: (in category 'construction') -----
+ addWithLabel: aLabel enablement: anEnablementSelector action: aSymbol 
+ 	self
+ 		addWithLabel: aLabel
+ 		enablementSelector: anEnablementSelector
+ 		target: defaultTarget
+ 		selector: aSymbol
+ 		argumentList: Array empty!
- addWithLabel: aLabel enablement: anEnablementSelector action: aSymbol
- 
- 	self addWithLabel: aLabel enablementSelector: anEnablementSelector target: defaultTarget selector: aSymbol argumentList: EmptyArray
- !

Item was changed:
  Object subclass: #Morph
  	instanceVariableNames: 'bounds owner submorphs fullBounds color extension'
+ 	classVariableNames: ''
- 	classVariableNames: 'EmptyArray'
  	poolDictionaries: ''
  	category: 'Morphic-Kernel'!
  
  !Morph commentStamp: 'efc 2/26/2003 20:01' prior: 0!
  A Morph (from the Greek "shape" or "form") is an interactive graphical object. General information on the Morphic system can be found at http://minnow.cc.gatech.edu/squeak/30. 
  
  Morphs exist in a tree, rooted at a World (generally a PasteUpMorph). The morphs owned by a morph are its submorphs. Morphs are drawn recursively; if a Morph has no owner it never gets drawn. To hide a Morph and its submorphs, set its #visible property to false using the #visible: method. 
  
  The World (screen) coordinate system is used for most coordinates, but can be changed if there is a TransformMorph somewhere in the owner chain. 
  
  My instance variables have accessor methods (e.g., #bounds, #bounds:). Most users should use the accessor methods instead of using the instance variables directly.
  
  Structure:
  instance var 	Type 			Description 
  bounds 			Rectangle 		A Rectangle indicating my position and a size that will enclose 									me. 
  owner 			Morph		 	My parent Morph, or nil for the top-level Morph, which is a
   				or nil			world, typically a PasteUpMorph.
  submorphs 		Array 			My child Morphs. 
  fullBounds 		Rectangle 		A Rectangle minimally enclosing me and my submorphs. 
  color 			Color 			My primary color. Subclasses can use this in different ways. 
  extension 		MorphExtension Allows extra properties to be stored without adding a
  				or nil  				storage burden to all morphs. 
  
  By default, Morphs do not position their submorphs. Morphs may position their submorphs directly or use a LayoutPolicy to automatically control their submorph positioning.
  
  Although Morph has some support for BorderStyle, most users should use BorderedMorph if they want borders.!

Item was changed:
  ----- Method: Morph class>>initialize (in category 'class initialization') -----
  initialize
  	"Morph initialize"
- 
- 	"this empty array object is shared by all morphs with no submorphs:"
- 	EmptyArray := Array new.
  	FileList registerFileReader: self!

Item was changed:
  ----- Method: Morph>>basicInitialize (in category 'initialization') -----
  basicInitialize
  	"Do basic generic initialization of the instance variables:  
  	Set up the receiver, created by a #basicNew and now ready to  
  	be initialized, by placing initial values in the instance variables  
  	as appropriate"
+ 	owner := nil.
+ 	submorphs := Array empty.
- owner := nil.
- 	submorphs := EmptyArray.
  	bounds := self defaultBounds.
- 	
  	color := self defaultColor!

Item was changed:
  ----- Method: Morph>>initialize (in category 'initialization') -----
  initialize
  	"initialize the state of the receiver"
+ 	owner := nil.
+ 	submorphs := Array empty.
- owner := nil.
- 	submorphs := EmptyArray.
  	bounds := self defaultBounds.
- 	
  	color := self defaultColor!

Item was changed:
  ----- Method: Morph>>models (in category 'model access') -----
  models
  	"Answer a collection of whatever models I may have."
+ 	^ self modelOrNil
+ 		ifNil: [ Array empty ]
+ 		ifNotNil: [ Array with: self modelOrNil ]!
- 
- 	self modelOrNil ifNil: [ ^EmptyArray ].
- 	^Array with: self modelOrNil!

Item was changed:
  ----- Method: Morph>>removeAllMorphs (in category 'submorphs-add/remove') -----
  removeAllMorphs
  	| oldMorphs myWorld |
  	myWorld := self world.
+ 	(fullBounds notNil or: [ myWorld notNil ]) ifTrue: [ self invalidRect: self fullBounds ].
+ 	submorphs do:
+ 		[ : m | myWorld ifNotNil: [ m outOfWorld: myWorld ].
+ 		m privateOwner: nil ].
- 	(fullBounds notNil or:[myWorld notNil]) ifTrue:[self invalidRect: self fullBounds].
- 	submorphs do: [:m | myWorld ifNotNil: [ m outOfWorld: myWorld ]. m privateOwner: nil].
  	oldMorphs := submorphs.
+ 	submorphs := Array empty.
+ 	oldMorphs do: [ : m | self removedMorph: m ].
+ 	self layoutChanged!
- 	submorphs := EmptyArray.
- 	oldMorphs do: [ :m | self removedMorph: m ].
- 	self layoutChanged.
- !

Item was changed:
  ----- Method: MovieMorph>>initialize (in category 'initialization') -----
  initialize
  	"initialize the state of the receiver"
  	super initialize.
- 	""
- 	
- 	playMode := #stop.
  	"#stop, #playOnce, or #loop"
+ 	playMode := #stop.
  	msecsPerFrame := 200.
  	rotationDegrees := 0.
  	scalePoint := 1.0 @ 1.0.
+ 	frameList := Array empty.
- 	frameList := EmptyArray.
  	currentFrameIndex := 1.
  	dwellCount := 0!

Item was changed:
  ----- Method: PopUpChoiceMorph>>initialize (in category 'initialization') -----
  initialize
  "initialize the state of the receiver"
  	super initialize.
- ""
  	self contents: 'PopUpChoice of Colors'.
  	target := Color.
  	actionSelector := nil.
+ 	arguments := Array empty.
- 	arguments := EmptyArray.
  	getItemsSelector := #colorNames.
+ 	getItemsArgs := Array empty!
- 	getItemsArgs := EmptyArray!

Item was changed:
  ----- Method: SimpleButtonMorph>>initializeAllButLabel (in category 'initialization') -----
  initializeAllButLabel
- 
  	super initialize.
+ 	self
+ 		 borderWidth: 1 ;
+ 		 color: (Color r: 0.4 g: 0.8 b: 0.6) ;
+ 		 borderColor: self color darker ;
+ 		 borderStyle: BorderStyle thinGray.
- 	self borderWidth: 1.
- 	self color: (Color r: 0.4 g: 0.8 b: 0.6).
- 	self borderColor: self color darker.
- 	self borderStyle: BorderStyle thinGray.
  	target := nil.
  	actionSelector := #flash.
+ 	arguments := Array empty.
+ 	actWhen := #buttonUp!
- 	arguments := EmptyArray.
- 	actWhen := #buttonUp
- !

Item was changed:
  ----- Method: ThreePhaseButtonMorph>>initialize (in category 'initialization') -----
  initialize
- 
  	super initialize.
  	state := #off.
  	target := nil.
  	actionSelector := #flash.
+ 	arguments := Array empty.
+ 	actWhen := #buttonUp
- 	arguments := EmptyArray.
- 	actWhen := #buttonUp.
  
  	"self on: #mouseStillDown send: #dragIfAuthoring: to: self."
  		"real move should include a call on dragIfAuthoring: "!



More information about the Squeak-dev mailing list