[Vm-dev] VM Maker: VMMakerUI-eem.28.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Oct 13 16:41:03 UTC 2020


Eliot Miranda uploaded a new version of VMMakerUI to project VM Maker:
http://source.squeak.org/VMMaker/VMMakerUI-eem.28.mcz

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

Name: VMMakerUI-eem.28
Author: eem
Time: 13 October 2020, 9:41:02.540423 am
UUID: 25c587b1-1972-41a3-ab3e-94e2b2d9cdb3
Ancestors: VMMakerUI-eem.27

Add click count to mouse e4vents and do a better job at collapsing mouse moves.  But the collapse code is still wrong; a much better way would be to peek in teh event queue and update the last event in teh queue to the curreent position if it is also a mouse move.  Also a UI indication that the event queue was not empty could help in not generating too many evennts.

=============== Diff against VMMakerUI-eem.27 ===============

Item was changed:
  ----- Method: SimulatorEventTransformer>>degenerateMouseEvent: (in category 'event transformation') -----
  degenerateMouseEvent: aMorphicEvent
  	"see HandMorph>>generateMouseEvent"
  
  	modifiers := aMorphicEvent buttons >> 3. "Sad, but modifiers come in on mouse move events..."
  	aMorphicEvent type == #mouseMove
  		ifTrue: [buttons = 0 ifTrue: [^nil]] "filter-out mouse moves unless buttons are pressed, so simulation doersn't get window leave events when we leave its window"
  		ifFalse: [buttons := aMorphicEvent buttons].
  	^{	1.
  		aMorphicEvent timeStamp.
  		aMorphicEvent position x.
  		aMorphicEvent position y.
  		buttons bitAnd: 7.  "thanks Ron T."
  		buttons >> 3.     "Thanks dtl"
+ 		aMorphicEvent class == MouseButtonEvent ifTrue: [aMorphicEvent nClicks] ifFalse: [0].
+ 		0 "this is windowIndex" }!
- 		0.
- 		0 }!

Item was changed:
  ----- Method: SimulatorEventTransformer>>degenerateMouseEvent:for: (in category 'event transformation') -----
  degenerateMouseEvent: aMorphicEvent for: aClient
  	"Convert the mouse event into low-level events for the VM simulator (aClient).  Filter-out mouse moves,
  	 and generate a fake mouse move before each button press.
  	 See HandMorph>>generateMouseEvent"
  	| translated |
  	modifiers := aMorphicEvent buttons >> 3. "Sad, but modifiers come in on mouse move events..."
  
  	"filter-out mouse moves unless buttons are pressed, so simulation doesn't get window leave events when we leave its window"
  	aMorphicEvent type == #mouseMove ifTrue:
  		[(aClient displayView bounds containsPoint: aMorphicEvent position) ifFalse:
  			[^self].
  		 "If buttons (which includes modifiers) change, or are pressed, communicate the event, otherwise (at least potentially) filter it out."
+ 	 aMorphicEvent buttons = 0 ifTrue: 
+ 		[lastMouseMoveEvent := aMorphicEvent copy.
+ 		 lastMouseMoveEvent timeStamp: (aClient ioUTCMicroseconds // 1000).
+ 		 lastMouseMoveEvent position: lastMouseMoveEvent position - aClient displayView bounds origin.
+ 		 ^self]].
+ 	"Now output the last move event, and synthesize an event near to the current position"
- 		 (aMorphicEvent buttons = 0
- 		  and: [lastMouseMoveEvent notNil
- 		  and: [lastMouseMoveEvent buttons = 0]]) ifTrue: 
- 			[lastMouseMoveEvent := aMorphicEvent copy.
- 			 lastMouseMoveEvent timeStamp: (aClient ioUTCMicroseconds // 1000).
- 			 lastMouseMoveEvent position: lastMouseMoveEvent position - aClient displayView bounds origin.
- 			 ^self]].
  	lastMouseMoveEvent ifNotNil:
+ 		[:lastMouseMove|
+ 		 aClient
+ 			queueForwardedEvent:
- 		[aClient queueForwardedEvent:
  				{	EventTypeMouse.
+ 					lastMouseMove timeStamp.
+ 					lastMouseMove position x.
+ 					lastMouseMove position y.
+ 					lastMouseMove buttons bitAnd: 7.
+ 					lastMouseMove buttons >> 3.
- 					lastMouseMoveEvent timeStamp.
- 					lastMouseMoveEvent position x.
- 					lastMouseMoveEvent position y.
- 					lastMouseMoveEvent buttons bitAnd: 7.
- 					lastMouseMoveEvent buttons >> 3.
  					0.
+ 					self windowIndex };
+ 			queueForwardedEvent:
+ 				{	EventTypeMouse.
+ 					aClient ioUTCMicroseconds // 1000 + lastMouseMove timeStamp // 2.
+ 					aMorphicEvent position x * 9 + lastMouseMove position x // 10.
+ 					aMorphicEvent position y * 9 + lastMouseMove position y // 10.
+ 					lastMouseMove buttons bitAnd: 7.
+ 					lastMouseMove buttons >> 3.
+ 					0.
  					self windowIndex }.
  		 lastMouseMoveEvent := nil].
  	buttons := aMorphicEvent buttons.
  	translated := aMorphicEvent position - aClient displayView bounds origin.
  	aClient queueForwardedEvent:
  			{	EventTypeMouse.
  				aClient ioUTCMicroseconds // 1000.
  				translated x.
  				translated y.
  				buttons bitAnd: 7.	"thanks Ron T."
  				buttons >> 3.		"Thanks dtl"
+ 				aMorphicEvent class == MouseButtonEvent ifTrue: [aMorphicEvent nClicks] ifFalse: [0].
- 				0.
  				self windowIndex }!



More information about the Vm-dev mailing list