diff -r ed96f735dab1 -r 2ef5b8bed914 UIObjectView.st --- a/UIObjectView.st Wed Apr 08 01:25:23 1998 +0200 +++ b/UIObjectView.st Wed Apr 08 13:16:21 1998 +0200 @@ -877,6 +877,24 @@ !UIObjectView methodsFor:'private handles'! +handleAffectedViews:aViewOrSeqOfViews + "update affected views + " + |bw| + + self forEach:aViewOrSeqOfViews do:[:v| + v shown ifTrue:[ + v fill:v viewBackground. + bw := v borderWidth. + bw ~~ 0 ifTrue:[ + v borderWidth:(bw - 1). + v borderWidth:bw. + ]. + v exposeX:0 y:0 width:9999 height:9999 + ] + ] +! + handlesOf:aComponent do:aTwoArgAction "perform action on each handle of a component " @@ -917,6 +935,14 @@ showUnselected:aComponent "show object unselected " + self showUnselected:aComponent addAffectedViewsTo:nil +! + +showUnselected:aComponent addAffectedViewsTo:aSet + "show object unselected. If the set, an IdentitySet, is not nil, the + affected subviews are added into the set, otherwise an expose event + to each affected cpomponent is raised. + " |wasClipped r| selectionHiddenLevel ~~ 0 ifTrue:[^ self]. @@ -932,7 +958,6 @@ ]. "/ must redraw all components which are affected b the handles - r := (aComponent originRelativeTo:self) - (3@3) extent:(aComponent extent + (6@6)). subViews do:[:anotherComponent | @@ -944,15 +969,17 @@ (absFrame intersects:r) ifTrue:[ anotherComponent withAllSubViewsDo:[:v | v shown ifTrue:[ - v fill:v viewBackground. - v exposeX:0 y:0 width:9999 height:9999. + aSet notNil ifTrue:[ + aSet add:v + ] ifFalse:[ + self handleAffectedViews:v + ] ] ] ] ] - ] - - "Modified: 8.4.1997 / 00:32:26 / cg" + ]. + ! whichHandleOf:aComponent isHitBy:aPoint @@ -1158,6 +1185,22 @@ !UIObjectView methodsFor:'selections'! +hideSelection + "hide the selection - undraw hilights - whatever that is" + + |aSet| + + self selectionDo:[:object| + aSet isNil ifTrue:[ + aSet := IdentitySet new + ]. + self showUnselected:object addAffectedViewsTo:aSet. + ]. + self handleAffectedViews:aSet. + + +! + moveableSelection "checks whether the selection is not empty and all selected instances can be moved. If true the selection is returned otherwise nil @@ -1243,7 +1286,7 @@ |coll| selectionHiddenLevel == 0 ifTrue:[ - self selectionDo:[:aView| self showUnselected:aView]. + self hideSelection. device flush. ]. selectionHiddenLevel := selectionHiddenLevel + 1.