[squeak-dev] The Trunk: Morphic-tpr.1067.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Jan 14 01:10:25 UTC 2016
tim Rowledge uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-tpr.1067.mcz
==================== Summary ====================
Name: Morphic-tpr.1067
Author: tpr
Time: 14 January 2016, 5:09:31.880065 pm
UUID: 9f5c0b23-31d9-4698-99ba-588068d5e268
Ancestors: Morphic-mt.1066
Use the new Time class>eventMillisecondClock method to get a fake timestamp for places where we have to fake up an event and want to compare its timestamp with a real event.
=============== Diff against Morphic-mt.1066 ===============
Item was changed:
----- Method: HandMorph>>generateDropFilesEvent: (in category 'private events') -----
generateDropFilesEvent: evtBuf
"Generate the appropriate mouse event for the given raw event buffer"
"Note: This is still in an experimental phase and will need more work"
| position buttons modifiers stamp numFiles dragType |
stamp := evtBuf second.
+ stamp = 0 ifTrue: [stamp := Time eventMillisecondClock].
- stamp = 0 ifTrue: [stamp := Time millisecondClockValue].
dragType := evtBuf third.
position := evtBuf fourth @ evtBuf fifth.
buttons := 0.
modifiers := evtBuf sixth.
buttons := buttons bitOr: (modifiers bitShift: 3).
numFiles := evtBuf seventh.
dragType = 4
ifTrue:
["e.g., drop"
owner borderWidth: 0.
^DropFilesEvent new
setPosition: position
contents: numFiles
hand: self].
"the others are currently not handled by morphs themselves"
dragType = 1
ifTrue:
["experimental drag enter"
owner
borderWidth: 4;
borderColor: owner color asColor negated].
dragType = 2
ifTrue:
["experimental drag move"
].
dragType = 3
ifTrue:
["experimental drag leave"
owner borderWidth: 0].
^nil!
Item was changed:
----- Method: HandMorph>>generateKeyboardEvent: (in category 'private events') -----
generateKeyboardEvent: evtBuf
"Generate the appropriate mouse event for the given raw event buffer"
| buttons modifiers type pressType stamp keyValue |
stamp := evtBuf second.
+ stamp = 0 ifTrue: [stamp := Time eventMillisecondClock].
- stamp = 0 ifTrue: [stamp := Time millisecondClockValue].
pressType := evtBuf fourth.
pressType = EventKeyDown ifTrue: [type := #keyDown].
pressType = EventKeyUp ifTrue: [type := #keyUp].
pressType = EventKeyChar ifTrue: [type := #keystroke].
modifiers := evtBuf fifth.
buttons := (modifiers bitShift: 3) bitOr: (lastMouseEvent buttons bitAnd: 7).
type = #keystroke
ifTrue: [keyValue := (self keyboardInterpreter nextCharFrom: Sensor firstEvt: evtBuf) asInteger]
ifFalse: [keyValue := evtBuf third].
^ KeyboardEvent new
setType: type
buttons: buttons
position: self position
keyValue: keyValue
hand: self
stamp: stamp.
!
Item was changed:
----- Method: HandMorph>>generateMouseEvent: (in category 'private events') -----
generateMouseEvent: evtBuf
"Generate the appropriate mouse event for the given raw event buffer"
| position buttons modifiers type trail stamp oldButtons evtChanged |
evtBuf first = lastEventBuffer first
ifTrue:
["Workaround for Mac VM bug, *always* generating 3 events on clicks"
evtChanged := false.
3 to: evtBuf size
do: [:i | (lastEventBuffer at: i) = (evtBuf at: i) ifFalse: [evtChanged := true]].
evtChanged ifFalse: [^nil]].
stamp := evtBuf second.
+ stamp = 0 ifTrue: [stamp := Time eventMillisecondClock].
- stamp = 0 ifTrue: [stamp := Time millisecondClockValue].
position := evtBuf third @ evtBuf fourth.
buttons := evtBuf fifth.
modifiers := evtBuf sixth.
type := buttons = 0
ifTrue:[
lastEventBuffer fifth = 0
ifTrue: [#mouseMove] "this time no button and previously no button .. just mouse move"
ifFalse: [#mouseUp] "this time no button but previously some button ... therefore button was released"
]
ifFalse:[
buttons = lastEventBuffer fifth
ifTrue: [#mouseMove] "button states are the same .. now and past .. therfore a mouse movement"
ifFalse: [ "button states are different .. button was pressed or released"
buttons > lastEventBuffer fifth
ifTrue: [#mouseDown]
ifFalse:[#mouseUp].
].
].
buttons := buttons bitOr: (modifiers bitShift: 3).
oldButtons := lastEventBuffer fifth
bitOr: (lastEventBuffer sixth bitShift: 3).
lastEventBuffer := evtBuf.
type == #mouseMove
ifTrue:
[trail := self mouseTrailFrom: evtBuf.
^MouseMoveEvent new
setType: type
startPoint: (self position)
endPoint: trail last
trail: trail
buttons: buttons
hand: self
stamp: stamp].
^MouseButtonEvent new
setType: type
position: position
which: (oldButtons bitXor: buttons)
buttons: buttons
hand: self
stamp: stamp!
Item was changed:
----- Method: HandMorph>>generateWindowEvent: (in category 'private events') -----
generateWindowEvent: evtBuf
"Generate the appropriate window event for the given raw event buffer"
| evt |
evt := WindowEvent new.
evt setTimeStamp: evtBuf second.
+ evt timeStamp = 0 ifTrue: [evt setTimeStamp: Time eventMillisecondClock].
- evt timeStamp = 0 ifTrue: [evt setTimeStamp: Time millisecondClockValue].
evt action: evtBuf third.
evt rectangle: (Rectangle origin: evtBuf fourth @ evtBuf fifth corner: evtBuf sixth @ evtBuf seventh ).
^evt!
Item was changed:
----- Method: MorphicEvent>>timeStamp (in category 'accessing') -----
timeStamp
"Return the millisecond clock value at which the event was generated"
+ ^timeStamp ifNil:[timeStamp := Time eventMillisecondClock]!
- ^timeStamp ifNil:[timeStamp := Time millisecondClockValue]!
Item was changed:
----- Method: MouseEvent>>asMouseMove (in category 'converting') -----
asMouseMove
"Convert the receiver into a mouse move"
+ ^MouseMoveEvent new setType: #mouseMove startPoint: position endPoint: position trail: {position. position} buttons: buttons hand: source stamp: Time eventMillisecondClock!
- ^MouseMoveEvent new setType: #mouseMove startPoint: position endPoint: position trail: {position. position} buttons: buttons hand: source stamp: Time millisecondClockValue.!
More information about the Squeak-dev
mailing list
|