DisplaySurface.st
changeset 5320 a222d6215ff0
parent 5208 004c601d0bc6
child 5344 2c3f14c132be
--- a/DisplaySurface.st	Fri Aug 07 11:49:52 2009 +0200
+++ b/DisplaySurface.st	Fri Aug 07 12:51:34 2009 +0200
@@ -12,7 +12,7 @@
 "{ Package: 'stx:libview' }"
 
 GraphicsMedium subclass:#DisplaySurface
-	instanceVariableNames:'viewBackground cursor eventMask moreAttributes unused1 uuid
+	instanceVariableNames:'viewBackground cursor eventMask moreAttributes renderer uuid
 		backed flags delegate updateRegion'
 	classVariableNames:'SaveUnderFlagMask GotExposeFlagMask'
 	poolDictionaries:''
@@ -1379,104 +1379,104 @@
      rect x y w h delegatedEvent rgn|
 
     type == #damage ifTrue:[
-        "/ OLDdamage scheme - this will vanish
-        self shown ifTrue:[
-            rect := argArray.
-            x := rect left.
-            y := rect top.
-            w := rect width.
-            h := rect height.
-            transformation notNil ifTrue:[
-                self deviceExposeX:x y:y width:w height:h
-            ] ifFalse:[
-                self exposeX:x y:y width:w height:h
-            ]
-        ].
-        ^ self
+	"/ OLDdamage scheme - this will vanish
+	self shown ifTrue:[
+	    rect := argArray.
+	    x := rect left.
+	    y := rect top.
+	    w := rect width.
+	    h := rect height.
+	    transformation notNil ifTrue:[
+		self deviceExposeX:x y:y width:w height:h
+	    ] ifFalse:[
+		self exposeX:x y:y width:w height:h
+	    ]
+	].
+	^ self
     ].
 
     type == #newDamage ifTrue:[
-        "/ New damage scheme
-        rgn := updateRegion.
-        updateRegion := nil.
-        self shown ifTrue:[
-            rgn notNil ifTrue:[
-                rgn do:[:rect |
-                    "/ cg: I think the check for being realized may not be enough;
-                    "/ there is a race here, if the view gets closed, while in the loop...
-                    realized ifTrue:[
-                        x := rect left.
-                        y := rect top.
-                        w := rect width.
-                        h := rect height.
-                        transformation notNil ifTrue:[
-                            self deviceExposeX:x y:y width:w height:h
-                        ] ifFalse:[
-                            self exposeX:x y:y width:w height:h
-                        ]
-                    ]
-                ]
-            ]
-        ].
-        ^ self
+	"/ New damage scheme
+	rgn := updateRegion.
+	updateRegion := nil.
+	self shown ifTrue:[
+	    rgn notNil ifTrue:[
+		rgn do:[:rect |
+		    "/ cg: I think the check for being realized may not be enough;
+		    "/ there is a race here, if the view gets closed, while in the loop...
+		    realized ifTrue:[
+			x := rect left.
+			y := rect top.
+			w := rect width.
+			h := rect height.
+			transformation notNil ifTrue:[
+			    self deviceExposeX:x y:y width:w height:h
+			] ifFalse:[
+			    self exposeX:x y:y width:w height:h
+			]
+		    ]
+		]
+	    ]
+	].
+	^ self
     ].
 
     isKeyEvent := isButtonEvent := isPointerEvent := isMouseWheelEvent := false.
 
     (type == #'keyPress:x:y:') ifTrue:[
-        isKeyEvent := true.
-        deviceMessage := #'deviceKeyPress:x:y:'.
-        delegateMessage := #'keyPress:x:y:view:'.
-        delegateQuery := #'handlesKeyPress:inView:'.
+	isKeyEvent := true.
+	deviceMessage := #'deviceKeyPress:x:y:'.
+	delegateMessage := #'keyPress:x:y:view:'.
+	delegateQuery := #'handlesKeyPress:inView:'.
     ] ifFalse:[ (type == #'keyRelease:x:y:') ifTrue:[
-        isKeyEvent := true.
-        deviceMessage := #'deviceKeyRelease:x:y:'.
-        delegateMessage := #'keyRelease:x:y:view:'.
-        delegateQuery := #'handlesKeyRelease:inView:'.
+	isKeyEvent := true.
+	deviceMessage := #'deviceKeyRelease:x:y:'.
+	delegateMessage := #'keyRelease:x:y:view:'.
+	delegateQuery := #'handlesKeyRelease:inView:'.
     ] ifFalse:[ (type == #'buttonMotion:x:y:') ifTrue:[
-        isButtonEvent := true.
-        deviceMessage := #'deviceButtonMotion:x:y:'.
-        delegateMessage := #'buttonMotion:x:y:view:'.
-        delegateQuery := #'handlesButtonMotion:inView:'.
+	isButtonEvent := true.
+	deviceMessage := #'deviceButtonMotion:x:y:'.
+	delegateMessage := #'buttonMotion:x:y:view:'.
+	delegateQuery := #'handlesButtonMotion:inView:'.
     ] ifFalse:[ (type == #'buttonPress:x:y:') ifTrue:[
-        isButtonEvent := true.
-        deviceMessage := #'deviceButtonPress:x:y:'.
-        delegateMessage := #'buttonPress:x:y:view:'.
-        delegateQuery := #'handlesButtonPress:inView:'.
+	isButtonEvent := true.
+	deviceMessage := #'deviceButtonPress:x:y:'.
+	delegateMessage := #'buttonPress:x:y:view:'.
+	delegateQuery := #'handlesButtonPress:inView:'.
     ] ifFalse:[ (type == #'buttonRelease:x:y:') ifTrue:[
-        isButtonEvent := true.
-        deviceMessage := #'deviceButtonRelease:x:y:'.
-        delegateMessage := #'buttonRelease:x:y:view:'.
-        delegateQuery := #'handlesButtonRelease:inView:'.
+	isButtonEvent := true.
+	deviceMessage := #'deviceButtonRelease:x:y:'.
+	delegateMessage := #'buttonRelease:x:y:view:'.
+	delegateQuery := #'handlesButtonRelease:inView:'.
     ] ifFalse:[ (type == #'buttonShiftPress:x:y:') ifTrue:[
-        isButtonEvent := true.
-        deviceMessage := #'deviceButtonShiftPress:x:y:'.
-        delegateMessage := #'buttonShiftPress:x:y:view:'.
-        delegateQuery := #'handlesButtonShiftPress:inView:'.
+	isButtonEvent := true.
+	deviceMessage := #'deviceButtonShiftPress:x:y:'.
+	delegateMessage := #'buttonShiftPress:x:y:view:'.
+	delegateQuery := #'handlesButtonShiftPress:inView:'.
     ] ifFalse:[ (type == #'buttonMultiPress:x:y:') ifTrue:[
-        isButtonEvent := true.
-        deviceMessage := #'deviceButtonMultiPress:x:y:'.
-        delegateMessage := #'buttonMultiPress:x:y:view:'.
-        delegateQuery := #'handlesButtonMultiPress:inView:'.
+	isButtonEvent := true.
+	deviceMessage := #'deviceButtonMultiPress:x:y:'.
+	delegateMessage := #'buttonMultiPress:x:y:view:'.
+	delegateQuery := #'handlesButtonMultiPress:inView:'.
     ] ifFalse:[ (type == #mouseWheelMotion:x:y:amount:deltaTime:) ifTrue:[
-        isMouseWheelEvent := true.
-        deviceMessage := type.
-        delegateMessage := #mouseWheelMotion:x:y:amount:deltaTime:view:.
-        delegateQuery := #handlesMouseWheelMotion:inView:.
+	isMouseWheelEvent := true.
+	deviceMessage := type.
+	delegateMessage := #mouseWheelMotion:x:y:amount:deltaTime:view:.
+	delegateQuery := #handlesMouseWheelMotion:inView:.
     ] ifFalse:[ (type == #'pointerEnter:x:y:') ifTrue:[
-        isPointerEvent := true.
-        deviceMessage := #'devicePointerEnter:x:y:'.
-        delegateMessage := #'pointerEnter:x:y:view:'.
-        delegateQuery := #'handlesPointerEnter:inView:'.
+	isPointerEvent := true.
+	deviceMessage := #'devicePointerEnter:x:y:'.
+	delegateMessage := #'pointerEnter:x:y:view:'.
+	delegateQuery := #'handlesPointerEnter:inView:'.
     ] ifFalse:[ (type == #'pointerLeave:') ifTrue:[
-        isPointerEvent := true.
-        deviceMessage := type.
-        delegateMessage := #'pointerLeave:view:'.
-        delegateQuery := #'handlesPointerLeave:inView:'.
+	isPointerEvent := true.
+	deviceMessage := type.
+	delegateMessage := #'pointerLeave:view:'.
+	delegateQuery := #'handlesPointerLeave:inView:'.
     ] ifFalse:[ (type == #'exposeX:y:width:height:') ifTrue:[
-        deviceMessage := #'deviceExposeX:y:width:height:'.
+	deviceMessage := #'deviceExposeX:y:width:height:'.
     ] ifFalse:[ (type == #'graphicsExposeX:y:width:height:final:') ifTrue:[
-        deviceMessage := #'deviceGraphicsExposeX:y:width:height:final:'.
+	deviceMessage := #'deviceGraphicsExposeX:y:width:height:final:'.
     ]]]]]]]]]]]].
 
     "
@@ -1487,56 +1487,56 @@
     "
     ((isKeyEvent "or:[isMouseWheelEvent]")
     and:[focusView notNil and:[self ~~ focusView]]) ifTrue:[
-        delegatedEvent := ev shallowCopy.
-        delegatedEvent delegatedFrom:ev.
-        delegatedEvent arguments:(ev arguments shallowCopy).
-        delegatedEvent x:-1; y:-1.
-
-        focusView
-            dispatchEvent:delegatedEvent
-            withFocusOn:nil
-            delegate:doDelegate.
-        ^ self
+	delegatedEvent := ev shallowCopy.
+	delegatedEvent delegatedFrom:ev.
+	delegatedEvent arguments:(ev arguments shallowCopy).
+	delegatedEvent x:-1; y:-1.
+
+	focusView
+	    dispatchEvent:delegatedEvent
+	    withFocusOn:nil
+	    delegate:doDelegate.
+	^ self
     ].
 
     doDelegate ifTrue:[
-        "
-         handle delegated messages
-        "
-        (isKeyEvent
-         or:[isButtonEvent
-         or:[isMouseWheelEvent
-         or:[isPointerEvent]]]) ifTrue:[
-            delegate := self delegate.
-
-            "
-             what a kludge - sending to delegate requires
-             another selector and an additional argument ...
-            "
-            (delegate notNil) ifTrue:[
-                "
-                 is the delegate interested in that event ?
-                 (if it does not respond to the handlesXXX message, assume: NO)
-                "
-                (delegate askFor:delegateQuery with:(argArray at:1) with:self) ifTrue:[
-                    "
-                     mhmh ... have to convert to logical coordinates
-                    "
-                    transformation notNil ifTrue:[
-                        argArray size > 2 ifTrue:[
-                            argArray at:2 put:(transformation applyInverseToX:(argArray at:2)).
-                            argArray at:3 put:(transformation applyInverseToY:(argArray at:3)).
-                        ].
-                    ].
-                    argArray isNil ifTrue:[
-                        delegate perform:delegateMessage with:self
-                    ] ifFalse:[
-                        delegate perform:delegateMessage withArguments:(argArray copyWith:self)
-                    ].
-                    ^ self
-                ]
-            ].
-        ].
+	"
+	 handle delegated messages
+	"
+	(isKeyEvent
+	 or:[isButtonEvent
+	 or:[isMouseWheelEvent
+	 or:[isPointerEvent]]]) ifTrue:[
+	    delegate := self delegate.
+
+	    "
+	     what a kludge - sending to delegate requires
+	     another selector and an additional argument ...
+	    "
+	    (delegate notNil) ifTrue:[
+		"
+		 is the delegate interested in that event ?
+		 (if it does not respond to the handlesXXX message, assume: NO)
+		"
+		(delegate askFor:delegateQuery with:(argArray at:1) with:self) ifTrue:[
+		    "
+		     mhmh ... have to convert to logical coordinates
+		    "
+		    transformation notNil ifTrue:[
+			argArray size > 2 ifTrue:[
+			    argArray at:2 put:(transformation applyInverseToX:(argArray at:2)).
+			    argArray at:3 put:(transformation applyInverseToY:(argArray at:3)).
+			].
+		    ].
+		    argArray isNil ifTrue:[
+			delegate perform:delegateMessage with:self
+		    ] ifFalse:[
+			delegate perform:delegateMessage withArguments:(argArray copyWith:self)
+		    ].
+		    ^ self
+		]
+	    ].
+	].
     ].
 
     "
@@ -1546,9 +1546,9 @@
      or:[isButtonEvent
      or:[isMouseWheelEvent
      or:[isPointerEvent]]]) ifTrue:[
-        realized ifFalse:[
-            ^ self
-        ]
+	realized ifFalse:[
+	    ^ self
+	]
     ].
 
     "
@@ -1556,14 +1556,14 @@
     "
     eventReceiver := self.
     (controller := self controller) notNil ifTrue:[
-        (isKeyEvent
-         or:[isButtonEvent
-         or:[isMouseWheelEvent
-         or:[isPointerEvent
-         or:[(type == #focusIn)
-         or:[(type == #focusOut)]]]]]) ifTrue:[
-            eventReceiver := controller.
-        ]
+	(isKeyEvent
+	 or:[isButtonEvent
+	 or:[isMouseWheelEvent
+	 or:[isPointerEvent
+	 or:[(type == #focusIn)
+	 or:[(type == #focusOut)]]]]]) ifTrue:[
+	    eventReceiver := controller.
+	]
     ].
 
     "
@@ -1579,14 +1579,14 @@
     selector := type.
 
     transformation notNil ifTrue:[
-        (isKeyEvent
-         or:[isButtonEvent
-         or:[isMouseWheelEvent
-         or:[isPointerEvent
-         or:[(type == #'exposeX:y:width:height:')
-         or:[(type == #'graphicsExposeX:y:width:height:final:')]]]]]) ifTrue:[
-            selector := deviceMessage
-        ]
+	(isKeyEvent
+	 or:[isButtonEvent
+	 or:[isMouseWheelEvent
+	 or:[isPointerEvent
+	 or:[(type == #'exposeX:y:width:height:')
+	 or:[(type == #'graphicsExposeX:y:width:height:final:')]]]]]) ifTrue:[
+	    selector := deviceMessage
+	]
     ].
 
     eventReceiver perform:selector withArguments:argArray
@@ -2510,7 +2510,7 @@
 !DisplaySurface class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/DisplaySurface.st,v 1.141 2009-02-25 11:30:52 sr Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/DisplaySurface.st,v 1.142 2009-08-07 10:51:34 sr Exp $'
 ! !
 
 DisplaySurface initialize!