# HG changeset patch # User ca # Date 1042815142 -3600 # Node ID 5e89f5959780c3c59d834b9a0da23a1b9b83e3f6 # Parent 493e0430518eff9b1e5302852ad014af067de6f2 no longer use InputView diff -r 493e0430518e -r 5e89f5959780 UIObjectView.st --- a/UIObjectView.st Fri Jan 17 15:50:44 2003 +0100 +++ b/UIObjectView.st Fri Jan 17 15:52:22 2003 +0100 @@ -15,14 +15,21 @@ "{ Package: 'stx:libtool2' }" ObjectView subclass:#UIObjectView - instanceVariableNames:'saveSelection inputView undoHistory copiedExtent copiedLayout - resizeData clipChildren selectionHiddenLevel gridParameters + instanceVariableNames:'saveSelection undoHistory copiedExtent copiedLayout resizeData + clipChildren selectionHiddenLevel gridParameters setOfSuperViewsSizeChanged' classVariableNames:'' poolDictionaries:'' category:'Interface-UIPainter' ! +Object subclass:#PostEventHandler + instanceVariableNames:'onView' + classVariableNames:'' + poolDictionaries:'' + privateIn:UIObjectView +! + Object subclass:#ResizeData instanceVariableNames:'object selector delta' classVariableNames:'' @@ -399,17 +406,14 @@ "set the modification / test mode " self shown ifTrue:[ - enableChannel value ifFalse:[ - saveSelection := selection. - self hideSelection. - selection := nil. - inputView unmap. - ] ifTrue:[ - inputView raise. - inputView realize. - selection := saveSelection. - self showSelection - ] + enableChannel value ifFalse:[ + saveSelection := selection. + self hideSelection. + selection := nil. + ] ifTrue:[ + selection := saveSelection. + self showSelection + ] ] "Created: / 30.3.1999 / 16:17:24 / stefan" @@ -486,23 +490,22 @@ exposeX:x y:y width:w height:h "handle an expose event from device; redraw selection " - resizeData isNil ifTrue:[ - super exposeX:x y:y width:w height:h. - - "/ handle any expose events (for subcomponents) before - "/ redrawing the handles. - (self sensor hasExposeEventFor:nil) ifTrue:[^ self]. - - self selectionDo:[:aComponent | - aComponent withAllSubViewsDo:[:v | - v realized ifTrue:[ - self sensor flushExposeEventsFor:v. - v exposeX:0 y:0 width:v width height:v height. - ] - ]. - self showSelected:aComponent - ] + super exposeX:x y:y width:w height:h. + + "/ handle any expose events (for subcomponents) before + "/ redrawing the handles. + (self sensor hasExposeEventFor:nil) ifTrue:[^ self]. + + self selectionDo:[:aComponent | + aComponent withAllSubViewsDo:[:v | + v realized ifTrue:[ + self sensor flushExposeEventsFor:v. + v exposeX:0 y:0 width:v width height:v height. + ] + ]. + self showSelected:aComponent + ] ]. "Modified: / 9.11.1998 / 12:50:34 / cg" @@ -556,15 +559,42 @@ "catch expose events for components, and redraw its handles after the redraw when this happens " - - |evView| - - anEvent isDamage ifTrue:[ - evView := anEvent view. - (self isSelected:evView) ifTrue:[ - self showSelected:evView - ] + |evView x y p| + + self testMode ifTrue:[^ false]. + + evView := anEvent view. + (evView isNil or:[evView == self]) ifTrue:[ + ^ false + ]. + + (evView isComponentOf:self) ifFalse:[ + ^ false ]. + + anEvent isInputEvent ifFalse:[ + "/ #isDamage: handled in PostEventHandler + +"/ (shown and:[anEvent isDamage]) ifTrue:[ +"/ (self isSelected:evView) ifTrue:[ +"/ self showSelected:evView +"/ ]. +"/ ]. + ^ false + ]. + + (anEvent isButtonEvent or:[anEvent isKeyEvent]) ifFalse:[ + ^ true + ]. + + x := anEvent x. + y := anEvent y. + p := device translatePoint:(x@y) fromView:evView toView:self. + + "/ patch the event + anEvent x:p x. + anEvent y:p y. + anEvent view:self. ^ false. ! @@ -577,10 +607,8 @@ "size of a view(s) changed " self withSelectionHiddenDo:[ - super sizeChanged:how - ] - - + super sizeChanged:how. + ]. ! ! !UIObjectView methodsFor:'initialization'! @@ -590,18 +618,7 @@ " super initialize. - "funny: since I do not want the created widgets to get pointer - events, I put an InputView on top of them, which catches those events - and passes them back to me - have to take care, that this inputView - is always on top - " - inputView := InputView origin:0.0@0.0 extent:1.0@1.0 in:self. setOfSuperViewsSizeChanged := IdentitySet new. - - inputView eventReceiver:self. - inputView enableButtonEvents. - inputView enableButtonMotionEvents. - self setDefaultActions. undoHistory := UndoHistory on:self. @@ -610,7 +627,7 @@ selectionHiddenLevel := 0. (self class gridShown) ifTrue:[ - super showGrid + super showGrid ]. "Modified: / 20.7.1998 / 18:14:51 / cg" @@ -625,20 +642,13 @@ self showSelection. ! -mapped - "make certain that the input view is on top. - " - super mapped. - inputView raise. - - "Created: / 20.7.1998 / 18:10:20 / cg" - "Modified: / 20.7.1998 / 18:11:32 / cg" -! - realize + |windowGroup| + super realize. - self windowGroup postEventHook:self - + windowGroup := self windowGroup. + windowGroup addPreEventHook:self. + windowGroup addPostEventHook:(PostEventHandler new onView:self). ! remap @@ -653,17 +663,6 @@ !UIObjectView methodsFor:'misc'! -cursor:aCursor - "set cursor - " - inputView realized ifTrue:[ - inputView cursor:aCursor - ]. - super cursor:aCursor - - -! - invertOutlineOf:something "invert outline of an object or collection of objects " @@ -1131,44 +1130,43 @@ findObjectAt:aPoint "find the origin/corner of the currentWidget " - |view viewId lastId point listOfViews| + |view viewId lastId point| point := aPoint + (device translatePoint:0@0 fromView:self toView:rootView). - inputView lower. - viewId := rootView id. [viewId notNil] whileTrue:[ lastId := viewId. viewId := device viewIdFromPoint:point in:lastId ]. - inputView raise. - view := device viewFromId:lastId. - - view ~~ inputView ifTrue:[^ view]. - - "/ look for 'hidden' views ... - - listOfViews := OrderedCollection new. - self allSubViewsDo:[:aView | - |org| - - aView ~~ inputView ifTrue:[ - org := device translatePoint:0@0 fromView:aView toView:self. - ((org extent:aView extent) containsPoint:aPoint) ifTrue:[ - listOfViews add:aView. - ] - ] - ]. - - listOfViews size > 0 ifTrue:[ - ^ listOfViews last - ]. - ^ nil - - "Modified: / 10.10.2001 / 14:05:07 / cg" + view == self ifTrue:[ ^ nil]. + ^ view +"/ view ~~ inputView ifTrue:[^ view]. +"/ +"/ "/ look for 'hidden' views ... +"/ +"/ listOfViews := OrderedCollection new. +"/ self allSubViewsDo:[:aView | +"/ |org| +"/ +"/ aView ~~ inputView ifTrue:[ +"/ org := device translatePoint:0@0 fromView:aView toView:self. +"/ ((org extent:aView extent) containsPoint:aPoint) ifTrue:[ +"/ listOfViews add:aView. +"/ ] +"/ ] +"/ ]. +"/ +"/ listOfViews size > 0 ifTrue:[ +"/ ^ listOfViews last +"/ ]. +"/ ^ nil +"/ +"/ "Modified: / 10.10.2001 / 14:05:07 / cg" +"/ +"/ ! ! !UIObjectView methodsFor:'selections'! @@ -2344,6 +2342,29 @@ ]. ! ! +!UIObjectView::PostEventHandler methodsFor:'event handling'! + +processEvent:anEvent + |evView| + + anEvent isDamage ifTrue:[ + onView testMode ifFalse:[ + evView := anEvent view. + + (onView isSelected:evView) ifTrue:[ + onView showSelected:evView. + ] + ] + ]. + ^ false +! ! + +!UIObjectView::PostEventHandler methodsFor:'instance creation'! + +onView:aView + onView := aView. +! ! + !UIObjectView::ResizeData methodsFor:'accessing'! delta