Marcel Taeumel uploaded a new version of Morphic to project The Trunk: http://source.squeak.org/trunk/Morphic-mt.1485.mcz
==================== Summary ====================
Name: Morphic-mt.1485 Author: mt Time: 24 April 2019, 11:10:53.74187 am UUID: ddfc0442-d803-f04f-9267-a248ef94916e Ancestors: Morphic-cmm.1484
Fixes a minor update/performance issue in SketchMorph, which affects the buttons of system windows.
I *think* it is never a good idea to overwrite #layoutChanged with such side effects. There are other examples in the code base. We should refactor that in the (near) future.
WHY? The message #layoutChanged should mean "Hey! My bounds have changed. Consider this in the next layout computation." It should not *do* the actual change but only tell others about it *after* it has happened.
=============== Diff against Morphic-cmm.1484 ===============
Item was changed: ----- Method: SketchMorph>>layoutChanged (in category 'layout') ----- layoutChanged "Update rotatedForm and compute new bounds." + + | priorBounds | + fullBounds ifNotNil: [self changed]. + + priorBounds := bounds. + + self flag: #refactor. "mt: Such side-effects in #layoutChanged can have a severe impact on performance. Better not overwrite it but manage the rotatedForm elsewhere and from there call #layoutChanged if bounds change. Also, just overwrite #extent to use the extent of the rotated form." - self changed. self generateRotatedForm. bounds := bounds origin extent: rotatedForm extent. + + priorBounds ~= bounds + ifTrue: [super layoutChanged]. + - super layoutChanged. self changed. !
packages@lists.squeakfoundation.org