DeviceWorkstation.st
changeset 2858 1b9d41fbd239
parent 2855 f1fca530bab1
child 2859 a4d53bcddfca
--- a/DeviceWorkstation.st	Mon Aug 23 14:17:22 1999 +0200
+++ b/DeviceWorkstation.st	Mon Aug 23 15:06:27 1999 +0200
@@ -23,7 +23,8 @@
 		shiftModifiers supportsDeepIcons preferredIconSize ditherColors
 		fixColors numFixRed numFixGreen numFixBlue fixGrayColors
 		copyBuffer lastCopyBuffer blackColor whiteColor focusMode
-		activeView clipBoardEncoding focusView deviceErrorSignal deviceIOErrorSignal'
+		activeView clipBoardEncoding focusView deviceErrorSignal
+		deviceIOErrorSignal'
 	classVariableNames:'ButtonTranslation MultiClickTimeDelta DeviceErrorSignal
 		DeviceIOErrorSignal DeviceIOTimeoutErrorSignal ErrorPrinting
 		DefaultScreen AllScreens CurrentScreenQuerySignal
@@ -3788,7 +3789,7 @@
     dispatching := true.
 
     AllScreens isNil ifTrue:[
-	AllScreens := IdentitySet new:1
+        AllScreens := IdentitySet new:1
     ].
     AllScreens add:self.
 
@@ -3804,36 +3805,35 @@
     inputSema := Semaphore new name:'display inputSema'.
 
     p := [
-	self initializeDeviceResources.
-
-	[dispatching] whileTrue:[
-	    AbortSignal handle:[:ex |
-		ex return
-	    ] do:[
-		self eventPending ifFalse:[
-		    Processor activeProcess setStateTo:#ioWait if:#active.
-		    inputSema wait.
-		].
-
-		self dispatchPendingEvents.
-	    ]
-	].
-	inputSema notNil ifTrue:[
-	    Processor disableSemaphore:inputSema.
-	    inputSema := nil.
-	].
-	AllScreens remove:self.
-	dispatchProcess := nil.
-	self close.
+        self initializeDeviceResources.
+
+        [dispatching] whileTrue:[
+            AbortSignal handle:[:ex |
+                ex return
+            ] do:[
+                self eventPending ifFalse:[
+                    Processor activeProcess setStateTo:#ioWait if:#active.
+                    inputSema wait.
+                ].
+
+                self dispatchPendingEvents.
+            ]
+        ].
+        inputSema notNil ifTrue:[
+            Processor disableSemaphore:inputSema.
+            inputSema := nil.
+        ].
+        dispatchProcess := nil.
+        self close.
     ] newProcess.
 
     "/
     "/ give the process a nice name (for the processMonitor)
     "/
     (nm := self displayName) notNil ifTrue:[
-	nm := 'event dispatcher (' ,  nm , ')'.
+        nm := 'event dispatcher (' ,  nm , ')'.
     ] ifFalse:[
-	nm := 'event dispatcher'.
+        nm := 'event dispatcher'.
     ].
     p name:nm.
     p priority:(Processor userInterruptPriority).
@@ -4767,7 +4767,9 @@
 
     focusView := activeView := rootView := lastView := nil.
     activeKeyboardGrab := activePointerGrab := nil.
-
+    LastActiveScreen == self ifTrue:[
+        LastActiveScreen := nil
+    ].
     AllScreens remove:self ifAbsent:nil.
 
     "Modified: 16.1.1997 / 19:34:11 / cg"
@@ -6481,6 +6483,6 @@
 !DeviceWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/DeviceWorkstation.st,v 1.317 1999-08-23 12:00:58 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/DeviceWorkstation.st,v 1.318 1999-08-23 13:06:27 cg Exp $'
 ! !
 DeviceWorkstation initialize!