--- 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