UIObjectView.st
changeset 1437 daaf701ab6a2
parent 1427 85b9b5da0b8d
child 1438 9255d2e6226b
--- a/UIObjectView.st	Sun Nov 19 13:53:09 2000 +0100
+++ b/UIObjectView.st	Sun Nov 19 17:18:04 2000 +0100
@@ -23,6 +23,13 @@
 	category:'Interface-UIPainter'
 !
 
+Object subclass:#ResizeData
+	instanceVariableNames:'object selector delta'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:UIObjectView
+!
+
 Object subclass:#UndoHistory
 	instanceVariableNames:'startIdentifier identifier painter history transaction enabled'
 	classVariableNames:''
@@ -37,13 +44,6 @@
 	privateIn:UIObjectView::UndoHistory
 !
 
-Object subclass:#ResizeData
-	instanceVariableNames:'object selector delta'
-	classVariableNames:''
-	poolDictionaries:''
-	privateIn:UIObjectView
-!
-
 !UIObjectView class methodsFor:'documentation'!
 
 copyright
@@ -1323,7 +1323,7 @@
     |
     aView isInputOnly ifTrue:[^ self].
 
-    (aView shown and:[theDamages notEmpty]) ifFalse:[ ^ theDamages ].
+    (aView shown and:[theDamages notEmpty]) ifFalse:[ ^ self ].
 
     aView subViews notNil ifTrue:[
         aView subViews reverseDo:[:v| self recursiveRepair:theDamages startIn:v ].
@@ -1374,13 +1374,11 @@
             ].
 
             w > 0 ifTrue:[
-"/                    aView clearRectangleX:x y:y width:w height:h.
+                aView clearRectangleX:x y:y width:w height:h.
                 aView exposeX:x y:y width:w height:h
             ].
-        ] ifFalse:[
-            isRepaired := false
-        ].
-        isRepaired ifTrue:[ theDamages removeIndex:anIndex ].
+            isRepaired ifTrue:[ theDamages removeIndex:anIndex ].
+        ]
     ].
 !
 
@@ -1420,21 +1418,27 @@
     ].
     damages := OrderedCollection new.
 
-    (oldClipped := clipChildren) ifTrue:[
-        self clippedByChildren:(clipChildren := false)
+    (oldClipped := clipChildren) ifFalse:[
+        self clippedByChildren:(clipChildren := true)
     ].
 
     self forEach:something do:[:v|
-        self handlesOf:v do:[:rec :wht|
-            self clearRectangle:rec.
-            damages add:rec
+        self handlesOf:v do:[:aDamage :wht|
+            damages reverseDo:[:el|
+                (el intersects:aDamage) ifTrue:[
+                    damages removeIdentical:el.
+
+                    aDamage left:(aDamage left   min:el left)
+                           right:(aDamage right  max:el right)
+                             top:(aDamage top    min:el top)
+                          bottom:(aDamage bottom max:el bottom)
+                ]
+            ].                        
+            damages add:aDamage
         ]
     ].
-
-    subViews notNil ifTrue:[
-        self clippedByChildren:(clipChildren := true).
-        subViews reverseDo:[:v| self recursiveRepair:damages startIn:v ].
-    ].
+    self recursiveRepair:damages startIn:self.
+
     oldClipped ~~ clipChildren ifTrue:[
         self clippedByChildren:(clipChildren := oldClipped).
     ].
@@ -2327,6 +2331,34 @@
     ].
 ! !
 
+!UIObjectView::ResizeData methodsFor:'accessing'!
+
+delta
+    ^ delta
+
+    "Created: / 2.2.1998 / 13:40:32 / cg"
+!
+
+object
+    ^ object
+
+    "Created: / 2.2.1998 / 13:40:24 / cg"
+!
+
+object:anObject selector:aSymbol delta:anInteger
+    object := anObject.
+    selector := aSymbol.
+    delta := anInteger.
+
+    "Created: / 2.2.1998 / 13:39:22 / cg"
+!
+
+selector
+    ^ selector
+
+    "Created: / 2.2.1998 / 13:40:42 / cg"
+! !
+
 !UIObjectView::UndoHistory class methodsFor:'constants'!
 
 maxHistorySize
@@ -2669,34 +2701,6 @@
     ^ actions isNil
 ! !
 
-!UIObjectView::ResizeData methodsFor:'accessing'!
-
-delta
-    ^ delta
-
-    "Created: / 2.2.1998 / 13:40:32 / cg"
-!
-
-object
-    ^ object
-
-    "Created: / 2.2.1998 / 13:40:24 / cg"
-!
-
-object:anObject selector:aSymbol delta:anInteger
-    object := anObject.
-    selector := aSymbol.
-    delta := anInteger.
-
-    "Created: / 2.2.1998 / 13:39:22 / cg"
-!
-
-selector
-    ^ selector
-
-    "Created: / 2.2.1998 / 13:40:42 / cg"
-! !
-
 !UIObjectView class methodsFor:'documentation'!
 
 version