no longer use InputView
authorca
Fri, 17 Jan 2003 15:52:22 +0100
changeset 1672 5e89f5959780
parent 1671 493e0430518e
child 1673 5ec4b63a862a
no longer use InputView
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