[squeak-dev] The Trunk: Morphic-mt.1781.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Oct 6 08:15:57 UTC 2021


Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1781.mcz

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

Name: Morphic-mt.1781
Author: mt
Time: 6 October 2021, 10:15:44.239651 am
UUID: 9fef6ccb-8df4-8047-8b0b-f8292ad3c397
Ancestors: Morphic-ul.1780

Fixes infinite-loop bug regarding #topRendererOrSelf by promoting TransformMorph to be an #isRenderer too, which makes sense because it clips and translates its contents already and usually has only a single submorph. The #transform could also scale and rotate. In the long term, the few extra features of TransformationMorph could be merged into TransformMorph. This would make it easier for clients to pick the right one. :-)

See http://lists.squeakfoundation.org/pipermail/squeak-dev/2021-October/216637.html

=============== Diff against Morphic-ul.1780 ===============

Item was changed:
  ----- Method: MorphicHaloDispatcher>>dispatchHalo:transferInwardsFrom: (in category 'dispatching') -----
  dispatchHalo: event transferInwardsFrom: currentTarget
  
  	| localEvent world |
  	"Note that a halo usually attaches to the outermost (or top) renderer in a composition around the rendered morph. Thus, we have to lookup that inner (or rendered) morph first when transferring the halo inwards in the hierarchy of submorphs."
  	currentTarget renderedMorph submorphsDo: [:nextTarget |
  		localEvent := event transformedBy: (nextTarget transformedFrom: currentTarget).
  		(nextTarget fullContainsPoint: localEvent position) ifTrue: [
+ 			^ nextTarget renderedMorph wantsHaloFromClick
- 			^ nextTarget wantsHaloFromClick
  				ifTrue: [self invokeHalo: localEvent on: nextTarget]
  				ifFalse: [self dispatchHalo: localEvent transferInwardsFrom: nextTarget]]].
  		
  	"We're at the bottom most level; throw the event back up to the root to find recipient"
  	event hand removeHalo.
  	Preferences maintainHalos ifFalse: [
  		(world := currentTarget world) ifNil: [ ^ false ].
  		localEvent := event transformedBy: (currentTarget transformedFrom: world) inverseTransformation.
  		world processEvent: localEvent resetHandlerFields].
  
  	^ false!

Item was added:
+ ----- Method: TransformMorph>>innocuousName (in category 'naming') -----
+ innocuousName
+ 
+ 	| r |
+ 	^ (r := self renderedMorph) == self
+ 		ifTrue: [super innocuousName]
+ 		ifFalse: [r innocuousName]!

Item was added:
+ ----- Method: TransformMorph>>isRenderer (in category 'classification') -----
+ isRenderer
+ 
+ 	^ true
+ !

Item was added:
+ ----- Method: TransformMorph>>renderedMorph (in category 'classification') -----
+ renderedMorph
+ 	"We are a renderer. Answer appropriately."
+ 
+ 	^ self hasSubmorphs
+ 		ifTrue: [self firstSubmorph renderedMorph]
+ 		ifFalse: [self]!

Item was changed:
  ----- Method: TransformMorph>>wantsHaloFromClick (in category 'halos and balloon help') -----
  wantsHaloFromClick
+ 
+ 	^ self renderedMorph == self!
- 	^ false!

Item was removed:
- ----- Method: TransformationMorph>>innocuousName (in category 'naming') -----
- innocuousName
- 	| r |
- 	^ (r := self renderedMorph) == self
- 		ifTrue: [super innocuousName] ifFalse: [r innocuousName]!

Item was removed:
- ----- Method: TransformationMorph>>isRenderer (in category 'classification') -----
- isRenderer
- 
- 	^ true
- !

Item was removed:
- ----- Method: TransformationMorph>>renderedMorph (in category 'classification') -----
- renderedMorph
- "We are a renderer. Answer appropriately."
- 
- submorphs isEmpty ifTrue: [^self].
- 	^self firstSubmorph renderedMorph!

Item was removed:
- ----- Method: TransformationMorph>>wantsHaloFromClick (in category 'halos and balloon help') -----
- wantsHaloFromClick
- 
- 	^ self renderedMorph == self!



More information about the Squeak-dev mailing list