diff -r d77b8df4f65a -r 6c0bc4ed2d88 UIObjectView.st --- a/UIObjectView.st Mon May 11 11:52:44 2009 +0200 +++ b/UIObjectView.st Tue May 12 00:52:42 2009 +0200 @@ -1471,17 +1471,22 @@ ]. selectionHiddenLevel := selectionHiddenLevel + 1. - aBlock ensure:[ - selectionHiddenLevel := selectionHiddenLevel - 1. - selectionHiddenLevel == 0 ifTrue:[ - setOfSuperViewsSizeChanged notEmpty ifTrue:[ - coll := self minClosedViewSetFor:setOfSuperViewsSizeChanged. - coll do:[:aView| aView sizeChanged:nil]. - setOfSuperViewsSizeChanged := IdentitySet new + aBlock + ensure:[ + selectionHiddenLevel == 1 ifTrue:[ + "/ careful to decrement selectionHiddenLevel AFTER the sizeChanged; + "/ otherwise, we get endless recursion here. + setOfSuperViewsSizeChanged notEmpty ifTrue:[ + coll := self minClosedViewSetFor:setOfSuperViewsSizeChanged. + coll do:[:aView| aView sizeChanged:nil]. + setOfSuperViewsSizeChanged := IdentitySet new + ]. + selectionHiddenLevel := selectionHiddenLevel - 1. + self showSelection. + ] ifFalse:[ + selectionHiddenLevel := selectionHiddenLevel - 1. ]. - self showSelection. ] - ] ! withoutSelectionDo:aBlock