UIObjectView.st
changeset 993 88a214788277
parent 967 c3f483120cd7
child 997 2a8a32256d4a
equal deleted inserted replaced
992:4d408220a60b 993:88a214788277
   473 !
   473 !
   474 
   474 
   475 exposeX:x y:y width:w height:h
   475 exposeX:x y:y width:w height:h
   476     "handle an expose event from device; redraw selection
   476     "handle an expose event from device; redraw selection
   477     "
   477     "
       
   478 
   478     resizeData isNil ifTrue:[
   479     resizeData isNil ifTrue:[
   479         super exposeX:x y:y width:w height:h.
   480         super exposeX:x y:y width:w height:h.
   480 
   481 
   481         "/ handle any expose events (for subcomponents) before
   482         "/ handle any expose events (for subcomponents) before
   482         "/ redrawing the handles.
   483         "/ redrawing the handles.
   487                 self sensor flushExposeEventsFor:v.
   488                 self sensor flushExposeEventsFor:v.
   488                 v exposeX:0 y:0 width:9999 height:9999.
   489                 v exposeX:0 y:0 width:9999 height:9999.
   489             ].
   490             ].
   490             self showSelected:aComponent
   491             self showSelected:aComponent
   491         ]
   492         ]
   492     ]
   493     ].
       
   494 
   493 
   495 
   494 !
   496 !
   495 
   497 
   496 keyPress:key x:x y:y
   498 keyPress:key x:x y:y
   497     "any key pressed
   499     "any key pressed
   618 !
   620 !
   619 
   621 
   620 invertOutlineOf:something
   622 invertOutlineOf:something
   621     "invert outline of an object or collection of objects
   623     "invert outline of an object or collection of objects
   622     "
   624     "
   623     |wasClipped p|
   625     |wasClipped|
   624 
   626 
   625     (wasClipped := clipChildren) ifTrue:[
   627     (wasClipped := clipChildren) ifTrue:[
   626         self clippedByChildren:(clipChildren := false).
   628         self clippedByChildren:(clipChildren := false).
   627     ].
   629     ].
   628 
   630 
   629     something isCollection ifTrue:[
   631     self xoring:[
   630         something do:[:v|
   632         |p|
   631             p := v originRelativeTo:self.
   633 
   632             self xoring:[self displayRectangle:(p extent:v extent)].
   634         something isCollection ifTrue:[
       
   635             something do:[:v |
       
   636                 |p|
       
   637 
       
   638                 p := v originRelativeTo:self.
       
   639                 self displayRectangle:(p extent:v extent).
       
   640             ].
       
   641         ] ifFalse:[
       
   642             |p|
       
   643 
       
   644             p := something originRelativeTo:self.
       
   645             self displayRectangle:(p extent:something extent).
   633         ]
   646         ]
   634     ] ifFalse:[
       
   635         p := something originRelativeTo:self.
       
   636         self xoring:[self displayRectangle:(p extent:something extent)]
       
   637     ].
   647     ].
   638 
   648 
   639     wasClipped ifTrue:[
   649     wasClipped ifTrue:[
   640         self clippedByChildren:(clipChildren := true).
   650         self clippedByChildren:(clipChildren := true).
   641     ].
   651     ].
   943     "
   953     "
   944     |wasClipped r v|
   954     |wasClipped r v|
   945 
   955 
   946     selectionHiddenLevel ~~ 0 ifTrue:[^ self].
   956     selectionHiddenLevel ~~ 0 ifTrue:[^ self].
   947 
   957 
   948     "/ new: simply create a little view ontop,
   958 "/    "/ new: simply create a little view ontop,
   949     "/ and move it over the handles. This will generate
   959 "/    "/ and move it over the handles. This will generate
   950     "/ the required expose events automatically.
   960 "/    "/ the required expose events automatically.
   951 
   961 "/    "/ mhmh - does not work correctly with inverted frame (exposes destroy it)
   952     v := SimpleView in:self.
   962 "/
   953     self handlesOf:aComponent do:[:rec :wht | 
   963 "/    v := SimpleView in:self.
   954         r isNil 
   964 "/    self handlesOf:aComponent do:[:rec :wht | 
   955             ifTrue:[r := rec]
   965 "/        r isNil 
   956             ifFalse:[r := r merge:rec].
   966 "/            ifTrue:[r := rec]
   957     ].
   967 "/            ifFalse:[r := r merge:rec].
   958 
       
   959     "/ if the area is small, make one big rectangle-expose
       
   960     r area < 10000 ifTrue:[
       
   961         v origin:r origin extent:r extent.
       
   962         v map.
       
   963         v unmap.
       
   964     ] ifFalse:[
       
   965         self handlesOf:aComponent do:[:rec :wht | 
       
   966             v origin:rec origin extent:rec extent.
       
   967             v map.
       
   968             v unmap.
       
   969         ].
       
   970     ].
       
   971     v destroy.
       
   972     ^ self.
       
   973 
       
   974 "/ OLD code:
       
   975 "/    (wasClipped := clipChildren) ifTrue:[
       
   976 "/        self clippedByChildren:(clipChildren := false). 
       
   977 "/    ].
   968 "/    ].
   978 "/
   969 "/
   979 "/    self handlesOf:aComponent do:[:rec :wht| self clearRectangle:rec ].
   970 "/    "/ if the area is small, make one big rectangle-expose
   980 "/
   971 "/    r area < 10000 ifTrue:[
   981 "/    wasClipped ifTrue:[
   972 "/        v origin:r origin extent:r extent.
   982 "/        self clippedByChildren:(clipChildren := true). 
   973 "/        v map.
       
   974 "/        v unmap.
       
   975 "/    ] ifFalse:[
       
   976 "/        self handlesOf:aComponent do:[:rec :wht | 
       
   977 "/            v origin:rec origin extent:rec extent.
       
   978 "/            v map.
       
   979 "/            v unmap.
       
   980 "/        ].
   983 "/    ].
   981 "/    ].
   984 "/
   982 "/    v destroy.
   985 "/    "/ must redraw all components which are affected b the handles
   983 "/    ^ self.
   986 "/    r := (aComponent originRelativeTo:self) - (3@3) extent:(aComponent extent + (6@6)).
   984 
   987 "/
   985     (wasClipped := clipChildren) ifTrue:[
   988 "/    subViews do:[:anotherComponent |
   986         self clippedByChildren:(clipChildren := false). 
   989 "/        |absOrg absFrame|
   987     ].
   990 "/
   988 
   991 "/        anotherComponent ~~ inputView ifTrue:[
   989     self handlesOf:aComponent do:[:rec :wht| self clearRectangle:rec ].
   992 "/            absOrg := anotherComponent originRelativeTo:self.
   990 
   993 "/            absFrame := absOrg extent:(anotherComponent extent).
   991     wasClipped ifTrue:[
   994 "/            (absFrame intersects:r) ifTrue:[
   992         self clippedByChildren:(clipChildren := true). 
   995 "/                anotherComponent withAllSubViewsDo:[:v |
   993     ].
   996 "/                    v shown ifTrue:[
   994 
   997 "/                        aSet notNil ifTrue:[
   995     "/ must redraw all components which are affected b the handles
   998 "/                            aSet add:v
   996     r := (aComponent originRelativeTo:self) - (3@3) extent:(aComponent extent + (6@6)).
   999 "/                        ] ifFalse:[
   997 
  1000 "/                            self handleAffectedViews:v
   998     subViews do:[:anotherComponent |
  1001 "/                        ]
   999         |absOrg absFrame|
  1002 "/                    ]
  1000 
  1003 "/                ]
  1001         anotherComponent ~~ inputView ifTrue:[
  1004 "/            ]
  1002             absOrg := anotherComponent originRelativeTo:self.
  1005 "/        ]
  1003             absFrame := absOrg extent:(anotherComponent extent).
  1006 "/    ].
  1004             (absFrame intersects:r) ifTrue:[
       
  1005                 anotherComponent withAllSubViewsDo:[:v |
       
  1006                     v shown ifTrue:[
       
  1007                         aSet notNil ifTrue:[
       
  1008                             aSet add:v
       
  1009                         ] ifFalse:[
       
  1010                             self handleAffectedViews:v
       
  1011                         ]
       
  1012                     ]
       
  1013                 ]
       
  1014             ]
       
  1015         ]
       
  1016     ].
  1007 
  1017 
  1008     "Modified: / 24.8.1998 / 12:19:38 / cg"
  1018     "Modified: / 24.8.1998 / 12:19:38 / cg"
  1009 !
  1019 !
  1010 
  1020 
  1011 whichHandleOf:aComponent isHitBy:aPoint
  1021 whichHandleOf:aComponent isHitBy:aPoint