[squeak-dev] The Trunk: ST80-mt.257.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jul 15 09:24:14 UTC 2020


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

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

Name: ST80-mt.257
Author: mt
Time: 15 July 2020, 11:24:14.540718 am
UUID: 0f736417-f062-483c-b2a3-9d1560a1bf1f
Ancestors: ST80-mt.256

Complements Kernel-mt.1333.

Fixes regression: mouse wheel works again in tools.

=============== Diff against ST80-mt.256 ===============

Item was added:
+ ----- Method: EventSensor>>characterForKeycode: (in category '*ST80-Support-keyboard') -----
+ characterForKeycode: keycode
+ 	"Map the given keycode to a Smalltalk character object. Encoding:
+ 		A keycode is 12 bits:   <4 modifer bits><8 bit ISO character>
+ 		Modifier bits are:       <command><option><control><shift>"
+ 
+ 	"NOTE: the command and option keys are specific to the Macintosh and may not have equivalents on other platforms."
+ 
+ 	keycode = nil ifTrue: [ ^nil ].
+ 	keycode class = Character ifTrue: [ ^keycode ].  "to smooth the transition!!"
+ 	^ Character value: (keycode bitAnd: 16rFF)!

Item was added:
+ ----- Method: EventSensor>>keyboard (in category '*ST80-Support-keyboard') -----
+ keyboard
+ 	"Answer the next (single-byte or multi-byte) character from the keyboard."
+ 
+ 	| firstCharacter secondCharactor stream multiCharacter converter |
+ 	"1) Consume next character from buffer."
+ 	(firstCharacter := self characterForKeycode: keyboardBuffer next) ifNil: [^ nil].
+ 	
+ 	"2) Peek additional character and try to read multi-byte character."
+ 	(secondCharactor := self characterForKeycode: keyboardBuffer peek) ifNil: [^ firstCharacter].
+ 	(converter := TextConverter defaultSystemConverter) ifNil: [^ firstCharacter].
+ 	stream := ReadStream on: (String with: firstCharacter with: secondCharactor).
+ 	multiCharacter := [converter nextFromStream: stream] ifError: [firstCharacter].
+ 	
+ 	"3) Only consume that additional character if we got a multi-byte character."
+ 	multiCharacter isOctetCharacter ifFalse: [keyboardBuffer next].
+ 	
+ 	"4) Answer either single-byte or multi-byte character."
+ 	^ multiCharacter
+ !

Item was added:
+ ----- Method: EventSensor>>keyboardPressed (in category '*ST80-Support-keyboard') -----
+ keyboardPressed
+ 	"Answer true if keystrokes are available."
+ 
+ 	^self peekKeyboard notNil!

Item was added:
+ ----- Method: EventSensor>>mouseWheelDelta (in category '*ST80-Support-mouse') -----
+ mouseWheelDelta
+ 
+ 	| delta |
+ 	delta := self peekMouseWheelDelta.
+ 	mouseWheelDelta := 0 at 0.
+ 	^ delta!

Item was added:
+ ----- Method: EventSensor>>mouseWheelDirection (in category '*ST80-Support-mouse') -----
+ mouseWheelDirection
+ 
+ 	| direction |
+ 	direction := self peekMouseWheelDirection.
+ 	mouseWheelDelta := 0 at 0.
+ 	^ direction!

Item was added:
+ ----- Method: EventSensor>>peekButtons (in category '*ST80-Support-mouse') -----
+ peekButtons
+ 
+ 	self fetchMoreEvents.
+ 	self eventQueue ifNotNil: [:queue | queue flush].
+ 	^ mouseButtons!

Item was added:
+ ----- Method: EventSensor>>peekKeyboard (in category '*ST80-Support-keyboard') -----
+ peekKeyboard
+ 	"Answer the next character in the keyboard buffer without removing it, or nil if it is empty."
+ 
+ 	self fetchMoreEvents.
+ 	self eventQueue ifNotNil: [:queue | queue flush].
+ 	^ self characterForKeycode: keyboardBuffer peek!

Item was added:
+ ----- Method: EventSensor>>peekMouseWheelDelta (in category '*ST80-Support-mouse') -----
+ peekMouseWheelDelta
+ 
+ 	self fetchMoreEvents.
+ 	self eventQueue ifNotNil: [:queue | queue flush].
+ 	^ mouseWheelDelta!

Item was added:
+ ----- Method: EventSensor>>peekMouseWheelDirection (in category '*ST80-Support-mouse') -----
+ peekMouseWheelDirection
+ 
+ 	| delta |
+ 	delta := self peekMouseWheelDelta.
+ 			
+ 	delta x > 0 ifTrue: [^ #right].
+ 	delta x < 0 ifTrue: [^ #left].
+ 	
+ 	delta y > 0 ifTrue: [^ #up].
+ 	delta y < 0 ifTrue: [^ #down].
+ 	
+ 	^ nil!

Item was added:
+ ----- Method: EventSensor>>peekPosition (in category '*ST80-Support-mouse') -----
+ peekPosition
+ 
+ 	self fetchMoreEvents.
+ 	self eventQueue ifNotNil: [:queue | queue flush].
+ 	^ mousePosition!

Item was changed:
  ----- Method: ListController>>controlActivity (in category 'control defaults') -----
  controlActivity
+ 	self scrollByMouseWheel ifTrue: [^self].
  	self scrollByKeyboard ifTrue: [^self].
  	self processKeyboard.
  	super controlActivity.
  !

Item was changed:
  ----- Method: MVCDebugger>>openNotifierNoSuspendContents:label: (in category 'initialize') -----
  openNotifierNoSuspendContents: msgString label: label
  
  	| builder spec view |
+ 	EventSensor default flushEvents.
  	super openNotifierNoSuspendContents: msgString label: label.
  	
  	builder := ToolBuilder default.
  	spec := self buildNotifierWith: builder label: label message: msgString.
  	
  	view := builder build: spec.
  	view controller openNoTerminate.
  
  	^ view!

Item was changed:
  ----- Method: MVCProject>>finalExitActions: (in category 'enter') -----
  finalExitActions: enteringProject
  
  	super finalExitActions: enteringProject.
  
  	self world unCacheWindows.
+ 	EventSensor default flushEvents.
- 	Sensor flushAllButDandDEvents.
  	
  	ScheduledControllers := nil.!

Item was changed:
  ----- Method: ParagraphEditor>>undo (in category 'menu messages') -----
  undo
  	"Reset the state of the paragraph prior to the previous edit.
  	 If another ParagraphEditor instance did that edit, UndoInterval is invalid;
  	 just recover the contents of the undo-buffer at the start of the paragraph."
  
+ 	sensor flushEvents. "a way to flush stuck keys"
- 	sensor flushKeyboard. "a way to flush stuck keys"
  	self closeTypeIn.
  
  	UndoParagraph == paragraph ifFalse: "Can't undo another paragraph's edit"
  		[UndoMessage := Message selector: #undoReplace.
  		UndoInterval := 1 to: 0.
  		Undone := true].
  	UndoInterval ~= self selectionInterval ifTrue: "blink the actual target"
  		[self selectInterval: UndoInterval; deselect].
  
  	"Leave a signal of which phase is in progress"
  	UndoParagraph := Undone ifTrue: [#redoing] ifFalse: [#undoing].
  	UndoMessage sentTo: self.
  	UndoParagraph := paragraph!

Item was changed:
  ----- Method: ScrollController>>controlActivity (in category 'control defaults') -----
  controlActivity
+ 	self scrollByMouseWheel ifTrue: [^ self].
  	self scrollByKeyboard ifTrue: [^ self].
  	self scrollBarContainsCursor
  		ifTrue: [self scroll]
  		ifFalse: [self normalActivity]!

Item was changed:
  ----- Method: ScrollController>>scrollByKeyboard (in category 'scrolling') -----
  scrollByKeyboard
  	| keyEvent |
  	keyEvent := sensor peekKeyboard.
  	keyEvent ifNil: [^ false].
  	(sensor controlKeyPressed or:[sensor commandKeyPressed]) ifFalse: [^ false].
  	keyEvent asciiValue = 30
  		ifTrue: 
  			[sensor keyboard.
+ 			self scrollViewUp ifTrue: [self moveMarker].
- 			self scrollViewDown ifTrue: [self moveMarker].
  			^ true].
  	keyEvent asciiValue = 31
  		ifTrue: 
  			[sensor keyboard.
+ 			self scrollViewDown ifTrue: [self moveMarker].
- 			self scrollViewUp ifTrue: [self moveMarker].
  			^ true].
  	^ false!

Item was added:
+ ----- Method: ScrollController>>scrollByMouseWheel (in category 'scrolling') -----
+ scrollByMouseWheel
+ 	| wheelDirection |
+ 	wheelDirection := sensor peekMouseWheelDirection.	
+ 	wheelDirection = #up
+ 		ifTrue: 
+ 			[sensor mouseWheelDirection.
+ 			self scrollViewUp ifTrue: [self moveMarker].
+ 			^ true].
+ 	wheelDirection = #down
+ 		ifTrue: 
+ 			[sensor mouseWheelDirection.
+ 			self scrollViewDown ifTrue: [self moveMarker].
+ 			^ true].
+ 	^ false!

Item was changed:
  ----- Method: ScrollController>>scrollViewDown (in category 'scrolling') -----
  scrollViewDown
  	"Scroll the receiver's view down the default amount.
  	Return true only if scrolling actually took place."
+ 	^ self scrollView: self scrollAmount negated!
- 	^ self scrollView: self scrollAmount!

Item was changed:
  ----- Method: ScrollController>>scrollViewUp (in category 'scrolling') -----
  scrollViewUp
  	"Scroll the receiver's view up the default amount.
  	Return true only if scrolling actually took place."
+ 	^ self scrollView: self scrollAmount!
- 	^ self scrollView: self scrollAmount negated!



More information about the Squeak-dev mailing list