'From Squeak3.6beta of ''4 July 2003'' [latest update: #5352] on 20 July 2003 at 10:16:50 am'! "Change Set: ShowEventsBetter-nk Date: 20 July 2003 Author: Ned Konz This little fix improves the display of events while debugging as follows: - clears old text first - displays key modifiers besides just Ctrl HandMorph showEvents: true. HandMorph showEvents: false. "! !HandMorph methodsFor: 'events-processing' stamp: 'nk 7/20/2003 10:02'! handleEvent: anEvent | evt ofs | owner ifNil:[^self]. evt _ anEvent. EventStats ifNil:[EventStats _ IdentityDictionary new]. EventStats at: #count put: (EventStats at: #count ifAbsent:[0]) + 1. EventStats at: evt type put: (EventStats at: evt type ifAbsent:[0]) + 1. evt isMouseOver ifTrue:[^self sendMouseEvent: evt]. ShowEvents == true ifTrue:[ Display fill: (0@0 extent: 250@120) rule: Form over fillColor: Color white. ofs _ (owner hands indexOf: self) - 1 * 60. evt printString displayAt: (0@ofs) + (evt isKeyboard ifTrue:[0@30] ifFalse:[0@0]). self keyboardFocus printString displayAt: (0@ofs)+(0@45). ]. "Notify listeners" self sendListenEvent: evt to: self eventListeners. evt isKeyboard ifTrue:[ self sendListenEvent: evt to: self keyboardListeners. self sendKeyboardEvent: evt. ^self mouseOverHandler processMouseOver: lastMouseEvent]. evt isDropEvent ifTrue:[ self sendEvent: evt focus: nil. ^self mouseOverHandler processMouseOver: lastMouseEvent]. evt isMouse ifTrue:[ self sendListenEvent: evt to: self mouseListeners. lastMouseEvent _ evt]. "Check for pending drag or double click operations." mouseClickState ifNotNil:[ (mouseClickState handleEvent: evt from: self) ifFalse:[ "Possibly dispatched #click: or something and will not re-establish otherwise" ^self mouseOverHandler processMouseOver: lastMouseEvent]]. evt isMove ifTrue:[ self position: evt position. self sendMouseEvent: evt. ] ifFalse:[ "Issue a synthetic move event if we're not at the position of the event" (evt position = self position) ifFalse:[self moveToEvent: evt]. "Drop submorphs on button events" (self hasSubmorphs) ifTrue:[self dropMorphs: evt] ifFalse:[self sendMouseEvent: evt]. ]. ShowEvents == true ifTrue:[self mouseFocus printString displayAt: (0@ofs) + (0@15)]. self mouseOverHandler processMouseOver: lastMouseEvent. ! ! !HandMorph class methodsFor: 'utilities' stamp: 'nk 7/20/2003 10:03'! showEvents: aBool "HandMorph showEvents: true" "HandMorph showEvents: false" ShowEvents _ aBool. aBool ifFalse: [ ActiveWorld invalidRect: (0@0 extent: 250@120) ].! ! !KeyboardEvent methodsFor: 'printing' stamp: 'nk 7/20/2003 10:13'! printOn: aStream aStream nextPut: $[. aStream nextPutAll: type; nextPutAll: ' '''. self controlKeyPressed ifTrue: [ aStream nextPutAll: 'Ctrl-' ]. self commandKeyPressed ifTrue: [ aStream nextPutAll: 'Cmd-' ]. (buttons anyMask: 32) ifTrue: [ aStream nextPutAll: 'Opt-' ]. self controlKeyPressed ifTrue: [ aStream nextPut: (keyValue + $a asciiValue - 1) asCharacter. ] ifFalse: [ aStream nextPut: self keyCharacter. ]. aStream nextPut: $'. aStream nextPut: $].! !