--- 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