[squeak-dev] The Trunk: Kernel-mt.988.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Feb 16 09:04:05 UTC 2016


Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-mt.988.mcz

==================== Summary ====================

Name: Kernel-mt.988
Author: mt
Time: 16 February 2016, 10:03:44.570748 am
UUID: 33646804-d866-4db9-9a27-ac599c317383
Ancestors: Kernel-mt.987

Fix accessor for eventQueue in EventSensor and make use of that accessor throughout the EventSensor code.

=============== Diff against Kernel-mt.987 ===============

Item was changed:
  ----- Method: EventSensor>>eventQueue (in category 'accessing') -----
  eventQueue
+ 	^ eventQueue!
- 	^nil!

Item was changed:
  ----- Method: EventSensor>>eventQueue: (in category 'accessing') -----
  eventQueue: aSharedQueue
+ 	eventQueue := aSharedQueue.!
- !

Item was changed:
  ----- Method: EventSensor>>flushAllButDandDEvents (in category 'accessing') -----
  flushAllButDandDEvents
  	| newQueue oldQueue  |
  	
  	newQueue := SharedQueue new.
+ 	self eventQueue ifNil: [ 
+ 		self eventQueue: newQueue.
+ 		^ self].
- 	self eventQueue ifNil: 
- 		[eventQueue := newQueue.
- 		^self].
  	oldQueue := self eventQueue.
  	[oldQueue size > 0] whileTrue: 
  		[| item type | 
  		item := oldQueue next.
  		type := item at: 1.
  		type = EventTypeDragDropFiles ifTrue: [ newQueue nextPut: item]].
+ 	self eventQueue: newQueue.!
- 	eventQueue := newQueue.
- !

Item was changed:
  ----- Method: EventSensor>>flushEvents (in category 'accessing') -----
  flushEvents
+ 	self eventQueue ifNotNil:[:queue | queue flush].!
- 	eventQueue ifNotNil:[eventQueue flush].!

Item was changed:
  ----- Method: EventSensor>>flushNonKbdEvents (in category 'private') -----
  flushNonKbdEvents
+ 
+ 	self eventQueue ifNotNil: [:queue |
+ 		queue flushAllSuchThat: [:buf | (self isKbdEvent: buf) not]].!
- 	eventQueue ifNil: [^ self].
- 	eventQueue flushAllSuchThat:
- 		[:buf | (self isKbdEvent: buf) not]
- !

Item was changed:
  ----- Method: EventSensor>>nextEvent (in category 'accessing') -----
  nextEvent
  	"Return the next event from the receiver."
+ 
+ 	^ self eventQueue 
+ 		ifNil: [self nextEventSynthesized]
+ 		ifNotNil: [self nextEventFromQueue]
- 	eventQueue == nil 
- 		ifTrue:[^self nextEventSynthesized]
- 		ifFalse:[^self nextEventFromQueue]
  !

Item was changed:
  ----- Method: EventSensor>>nextEventFromQueue (in category 'private') -----
  nextEventFromQueue
+ 	"Return the next event from the receiver. If the queue is empty, try to fetch more events once."
+ 
+ 	self eventQueue isEmpty
+ 		ifTrue: [self fetchMoreEvents].
+ 
+ 	^ self eventQueue isEmpty
+ 		ifTrue: [nil]
+ 		ifFalse: [self eventQueue next]!
- 	"Return the next event from the receiver."
- 	eventQueue isEmpty ifTrue:[self fetchMoreEvents].
- 	eventQueue isEmpty
- 		ifTrue:[^nil]
- 		ifFalse:[^eventQueue next]!

Item was changed:
  ----- Method: EventSensor>>peekEvent (in category 'accessing') -----
  peekEvent
+ 	"Look ahead at the next event. Try to fetch more events first."
+ 
+ 	^ self eventQueue
+ 		ifNil: [nil]
+ 		ifNotNil: [:queue |
+ 			self fetchMoreEvents.
+ 			queue peek]!
- 	"Look ahead at the next event."
- 	eventQueue ifNil:[^nil].
- 	self fetchMoreEvents.
- 	^eventQueue peek!

Item was changed:
  ----- Method: EventSensor>>peekKeyboardEvent (in category 'accessing') -----
  peekKeyboardEvent
  	"Return the next keyboard char event from the receiver or nil if none available"
+ 	
+ 	^ self eventQueue
+ 		ifNil: [nil]
+ 		ifNotNil: [:queue |
+ 			self fetchMoreEvents.
+ 			queue nextOrNilSuchThat: [:buf | 
+ 				buf first = EventTypeKeyboard and: [(buf fourth) = EventKeyChar]]]!
- 	^eventQueue nextOrNilSuchThat: 
- 					[:buf | 
- 					buf first = EventTypeKeyboard and: [(buf fourth) = EventKeyChar]]!

Item was removed:
- ----- Method: EventSensor>>peekMousePt (in category 'accessing') -----
- peekMousePt
- 	^mousePosition!

Item was changed:
  ----- Method: EventSensor>>primKbdNext (in category 'private') -----
  primKbdNext
  	"Allows for use of old Sensor protocol to get at the keyboard,
  	as when running kbdTest or the InterpreterSimulator in Morphic"
  	| evtBuf |
  	self fetchMoreEvents.
  	keyboardBuffer isEmpty ifFalse:[^ keyboardBuffer next].
+ 	self eventQueue ifNotNil: [:queue |
+ 		evtBuf := queue nextOrNilSuchThat: [:buf | self isKbdEvent: buf].
- 	eventQueue ifNotNil:
- 		[evtBuf := eventQueue nextOrNilSuchThat: [:buf | self isKbdEvent: buf].
  		self flushNonKbdEvents].
  	^ evtBuf ifNotNil: [evtBuf at: 3]
  !

Item was changed:
  ----- Method: EventSensor>>primKbdPeek (in category 'private') -----
  primKbdPeek
  	"Allows for use of old Sensor protocol to get at the keyboard,
  	as when running kbdTest or the InterpreterSimulator in Morphic"
  	| char |
  	self fetchMoreEvents.
  	keyboardBuffer isEmpty ifFalse: [^ keyboardBuffer peek].
  	char := nil.
+ 	self eventQueue ifNotNil: [:queue |
+ 		queue nextOrNilSuchThat:  "NOTE: must not return out of this block, so loop to end"
- 	eventQueue ifNotNil:
- 		[eventQueue nextOrNilSuchThat:  "NOTE: must not return out of this block, so loop to end"
  			[:buf | (self isKbdEvent: buf) ifTrue: [char ifNil: [char := buf at: 3]].
  			false  "NOTE: block value must be false so Queue won't advance"]].
  	^ char!

Item was changed:
  ----- Method: EventSensor>>processKeyboardEvent: (in category 'private-I/O') -----
  processKeyboardEvent: evt
  	"process a keyboard event, updating EventSensor state"
  	| charCode pressCode |
  	"Never update keyboardBuffer if we have an eventQueue active"
  	mouseButtons := (mouseButtons bitAnd: 7) bitOr: ((evt at: 5) bitShift: 3).
+ 	self eventQueue ifNotNil:[^self]. 
- 	eventQueue ifNotNil:[^self]. 
  	charCode := evt at: 3.
  	charCode = nil ifTrue:[^self]. "extra characters not handled in MVC"
  	pressCode := evt at: 4.
  	pressCode = EventKeyChar ifFalse:[^self]. "key down/up not handled in MVC"
  	"mix in modifiers"
  	charCode := charCode bitOr: ((evt at: 5) bitShift: 8).
  	keyboardBuffer nextPut: charCode.!

Item was changed:
  ----- Method: EventSensor>>queueEvent: (in category 'private-I/O') -----
  queueEvent: evt
  	"Queue the given event in the event queue (if any).
  	Note that the event buffer must be copied since it
  	will be reused later on."
+ 	
+ 	self eventQueue ifNotNil: [:queue |
+ 		queue nextPut: evt clone].!
- 	eventQueue ifNil:[^self].
- 	eventQueue nextPut: evt clone.!



More information about the Squeak-dev mailing list