*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Tue, 12 May 2009 00:52:42 +0200
changeset 2516 6c0bc4ed2d88
parent 2515 d77b8df4f65a
child 2517 0b6a4dedf64b
*** empty log message ***
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