[squeak-dev] The Trunk: Morphic-ul.1393.mcz

commits at source.squeak.org commits at source.squeak.org
Mon Feb 5 20:11:45 UTC 2018


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

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

Name: Morphic-ul.1393
Author: ul
Time: 5 February 2018, 9:11:37.44438 pm
UUID: a9608a85-3f47-45e1-9316-fabd23e326d1
Ancestors: Morphic-tpr.1392

- avoid multiple #halo sends in some methods sending #halo to Morphs
- minor improvement to Morph>>updateDropShadowCache's performance
- removed a sender of #fixTemps
- use ByteArray literals instead of Arrays

=============== Diff against Morphic-tpr.1392 ===============

Item was changed:
  ----- Method: BalloonMorph class>>getVertices: (in category 'private') -----
  getVertices: bounds
  	"Construct vertices for a balloon up and to left of anchor"
  
  	| corners |
+ 	corners := bounds corners atAll: #[1 4 3 2].
- 	corners := bounds corners atAll: #(1 4 3 2).
  	^ (Array
  		with: corners first + (0 - bounds width // 2 @ 0)
  		with: corners first + (0 - bounds width // 4 @ (bounds height // 2))) , corners!

Item was changed:
  ----- Method: HandMorph>>halo: (in category 'halo handling') -----
  halo: newHalo
  	"Set halo associated with this hand"
+ 
  	| oldHalo |
+ 	(oldHalo := self halo) == newHalo ifTrue: [ ^self ].
+ 	oldHalo ifNotNil: [ oldHalo delete ].
- 	oldHalo := self halo.
- 	(oldHalo isNil or:[oldHalo == newHalo]) ifFalse:[oldHalo delete].
  	newHalo
  		ifNil:[self removeProperty: #halo]
  		ifNotNil:[self setProperty: #halo toValue: newHalo]!

Item was changed:
  ----- Method: HandMorph>>removeHalo (in category 'halo handling') -----
  removeHalo
  	"remove the receiver's halo (if any)"
+ 
+ 	self halo ifNotNil: [ :halo |
+ 		halo delete.
+ 		self removeProperty: #halo ]!
- 	| halo |
- 	halo := self halo.
- 	halo
- 		ifNil: [^ self].
- 	halo delete.
- 	self removeProperty: #halo!

Item was changed:
  ----- Method: HandMorph>>selectedObject (in category 'selected object') -----
  selectedObject
  	"answer the selected object for the hand or nil is none"
+ 	
+ 	^self halo ifNotNil: [ :halo | halo target renderedMorph ]!
- 	| halo |
- 	halo := self halo.
- 	halo isNil
- 		ifTrue: [^ nil].
- 	^ halo target renderedMorph!

Item was changed:
  ----- Method: HandMorph>>spawnMagicHaloFor: (in category 'halo handling') -----
  spawnMagicHaloFor: aMorph
+ 	
+ 	self halo ifNotNil: [ :halo |
+ 		halo target == aMorph ifTrue:[ ^self ] ].
- 	(self halo notNil and:[self halo target == aMorph]) ifTrue:[^self].
  	aMorph addMagicHaloFor: self.!

Item was changed:
  ----- Method: Morph>>removeHalo (in category 'halos and balloon help') -----
  removeHalo
  	"remove the surrounding halo (if any)"
+ 
+ 	self halo ifNotNil: [ self primaryHand removeHalo ]!
- 	self halo isNil
- 		ifFalse: [self primaryHand removeHalo]!

Item was changed:
  ----- Method: Morph>>updateDropShadowCache (in category 'drawing') -----
  updateDropShadowCache
  
+ 	| shadowOffset shadowBounds offset form canvas drawBlock localBounds mask maskCanvas |
+ 	(shadowOffset := self shadowOffset) isRectangle
+ 		ifTrue: [
+ 			shadowBounds := 0 at 0 corner: (self bounds outsetBy: shadowOffset) extent.
+ 			offset := 0 at 0.
+ 			localBounds := shadowOffset topLeft extent: self extent ]
+ 		ifFalse: [
+ 			| extent |
+ 			extent := self extent.
+ 			shadowBounds := 0 at 0 corner: extent + shadowOffset abs.
+ 			offset := shadowOffset max: 0 at 0.
+ 			localBounds := (shadowOffset negated max: 0 at 0) extent: extent ].
- 	| shadowBounds offset form canvas drawBlock localBounds mask maskCanvas |
- 	shadowBounds := self shadowOffset isRectangle
- 		ifTrue: [0 at 0 corner: (self bounds outsetBy: self shadowOffset) extent]
- 		ifFalse: [0 at 0 corner: self extent + self shadowOffset abs].
- 	offset := self shadowOffset isRectangle
- 		ifTrue: [0 at 0]
- 		ifFalse: [self shadowOffset max: 0 at 0].
- 	localBounds := self shadowOffset isRectangle
- 		ifTrue: [self shadowOffset topLeft extent: self extent]
- 		ifFalse: [(self shadowOffset negated max: 0 at 0) extent: self extent].
  		
  	form := Form extent: shadowBounds extent depth: Display depth.
  	canvas := form getCanvas.
  
  	drawBlock := self useSoftDropShadow
  		ifFalse: [
  			[:c | self wantsRoundedCorners
  					ifTrue: [c fillRoundRect: localBounds radius: self cornerRadius fillStyle: self shadowColor]
  					ifFalse: [c fillRectangle: localBounds fillStyle: self shadowColor]]]
  		ifTrue: [
  			[:c | self wantsRoundedCorners
  					ifTrue: [0 to: 9 do: [:i |
  						c
  							fillRoundRect: (shadowBounds insetBy: i)
  							radius: (self cornerRadius max: 20) -i
  							fillStyle: (self shadowColor alpha: self shadowColor alpha * (i+1))]]
  					ifFalse: [0 to: 9 do: [:i | 
  						c
  							fillRoundRect: (shadowBounds insetBy: i) radius: 20-i
  							fillStyle: (self shadowColor alpha: self shadowColor alpha * (i+1))]]]].
  			
  	canvas 
  		translateBy: offset
  		during: [ :shadowCanvas | drawBlock value: shadowCanvas].
  
  	"Support transparent morph colors without having the shadow to shine through.."
  	mask := Form extent: shadowBounds extent depth: Display depth.
  	maskCanvas := mask getCanvas.
  	self wantsRoundedCorners
  		ifTrue: [maskCanvas fillRoundRect: (localBounds insetBy: self borderWidth) radius: self cornerRadius fillStyle: Color black]
  		ifFalse: [maskCanvas fillRectangle: (localBounds insetBy: self borderWidth) fillStyle: Color black].
  	mask
  		displayOn: form
  		at: 0 at 0
  		rule: Form erase.
  	
  	self setProperty: #dropShadow toValue: form.!

Item was changed:
  ----- Method: SelectionMorph>>justDroppedInto:event: (in category 'dropping/grabbing') -----
  justDroppedInto: newOwner event: evt
  	"This message is sent to a dropped morph after it has been dropped on -- and been accepted by -- a drop-sensitive morph"
  
  	selectedItems isEmpty ifTrue:
  		["Hand just clicked down to draw out a new selection"
  		^ self extendByHand: evt hand].
  	dupLoc ifNotNil: [dupDelta := self position - dupLoc].
  	selectedItems reverseDo: [:m | 
  		WorldState addDeferredUIMessage:
  			[m referencePosition: (newOwner localPointToGlobal: m referencePosition).
  			newOwner handleDropMorph:
+ 				(DropEvent new setPosition: evt cursorPoint contents: m hand: evt hand)]].
- 				(DropEvent new setPosition: evt cursorPoint contents: m hand: evt hand)] fixTemps].
  	selectedItems := nil.
  	self removeHalo. 
+ 	self halo ifNotNil: [ :halo | halo visible: false ]. 
- 	self halo ifNotNil: [self halo visible: false]. 
  	self delete.
  	evt wasHandled: true!



More information about the Squeak-dev mailing list