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