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

commits at source.squeak.org commits at source.squeak.org
Tue Jan 12 13:52:53 UTC 2021


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

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

Name: Morphic-mt.1716
Author: mt
Time: 12 January 2021, 2:52:47.977356 pm
UUID: 93f95f53-4457-5e4c-a157-5cbf89aa7328
Ancestors: Morphic-mt.1715

Fixes a bug in resize grips (having #rigid targets) that are placed within layouted (usually #shrinkWrap) owners.

This makes all grips in resizable dialogs finally work as expected. I still consider this a #workaround to be improved.

=============== Diff against Morphic-mt.1715 ===============

Item was changed:
  ----- Method: BorderedMorph>>doFastWindowReframe: (in category 'resize handling') -----
  doFastWindowReframe: ptName
  
+ 	| newBounds delta |
- 	| newBounds |
  	"For fast display, only higlight the rectangle during loop"
  	newBounds := self bounds newRectButtonPressedDo: [:f | 
  		f 
  			withSideOrCorner: ptName
  			setToPoint: (self pointFromWorld: Sensor cursorPoint)
  			minExtent: self minimumExtent].
+ 	delta := newBounds origin - self bounds origin.
  	self bounds: newBounds.
+ 	self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."
+ 	self allOwnersDo: [:owner |
+ 		owner layoutPolicy ifNotNil: [owner topLeft: owner topLeft + delta]].
  	^newBounds.!

Item was changed:
  ----- Method: BottomLeftGripMorph>>apply: (in category 'target resize') -----
  apply: delta 
  	| oldBounds |
  	oldBounds := self target bounds.
  	self target
+ 		bounds: (oldBounds origin + (delta x @ 0) corner: oldBounds corner + (0 @ delta y)).
+ 	self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."
+ 	self target allOwnersDo: [:owner |
+ 		owner layoutPolicy ifNotNil: [owner left: owner left + delta x]].!
- 		bounds: (oldBounds origin + (delta x @ 0) corner: oldBounds corner + (0 @ delta y))!

Item was changed:
  ----- Method: LeftGripMorph>>apply: (in category 'target resize') -----
  apply: delta 
  	| oldBounds |
  	oldBounds := self target bounds.
  	self target
+ 		bounds: (oldBounds origin + (delta x @ 0) corner: oldBounds corner).
+ 	self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."
+ 	self target allOwnersDo: [:owner |
+ 		owner layoutPolicy ifNotNil: [owner left: owner left + delta x]].!
- 		bounds: (oldBounds origin + (delta x @ 0) corner: oldBounds corner)!

Item was changed:
  ----- Method: TopGripMorph>>apply: (in category 'target resize') -----
  apply: delta 
  	| oldBounds |
  	oldBounds := self target bounds.
  	self target
+ 		bounds: (oldBounds origin + (0 @ delta y) corner: oldBounds corner).
+ 	self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."
+ 	self target allOwnersDo: [:owner |
+ 		owner layoutPolicy ifNotNil: [owner top: owner top + delta y]].!
- 		bounds: (oldBounds origin + (0 @ delta y) corner: oldBounds corner)!

Item was changed:
  ----- Method: TopLeftGripMorph>>apply: (in category 'target resize') -----
  apply: delta 
  	| oldBounds |
  	oldBounds := self target bounds.
  	self target
+ 		bounds: (oldBounds origin + delta corner: oldBounds corner).
+ 	self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."
+ 	self target allOwnersDo: [:owner |
+ 		owner layoutPolicy ifNotNil: [owner topLeft: owner topLeft + delta]].!
- 		bounds: (oldBounds origin + delta corner: oldBounds corner)!

Item was changed:
  ----- Method: TopRightGripMorph>>apply: (in category 'target resize') -----
  apply: delta 
  	| oldBounds |
  	oldBounds := self target bounds.
  	self target
+ 		bounds: (oldBounds origin + (0 at delta y) corner: oldBounds corner + (delta x @ 0)).
+ 	self flag: #workaround. "mt: Due to a layout-specific 'let us start in the top-left corner of a layout cell'-behavior, we have to go up the owner chain and propagate the delta. See Morph >> #layoutInBounds:positioning: and there section 1.2."
+ 	self target allOwnersDo: [:owner |
+ 		owner layoutPolicy ifNotNil: [owner top: owner top + delta y]].!
- 		bounds: (oldBounds origin + (0 at delta y) corner: oldBounds corner + (delta x @ 0))!



More information about the Squeak-dev mailing list