[squeak-dev] swapMouseButtons broken in trunk

David T. Lewis lewis at mail.msen.com
Wed Mar 2 00:35:09 UTC 2016


It looks like the preference has changed. For the #swapMouseButtons preference,
the changeSelector was #installMouseDecodeTable, but now the selector is
#swapMouseButtonsChanged.

If I inspect the preference and change its changeSelector back to the original
#installMouseDecodeTable, the preference works again.

I cannot find where the preference gets initialized, and I do not know why it
changed, but this does seem to be the cause of the problem.

Dave




On Tue, Mar 01, 2016 at 04:45:44PM -0600, Chris Muller wrote:
> EventSensor class(Object)>>doesNotUnderstand: #swapMouseButtonsChanged
> Receiver: EventSensor
> Arguments and temporary variables:
> aMessage: swapMouseButtonsChanged
> exception: MessageNotUnderstood: EventSensor class>>swapMouseButtonsChanged
> resumeValue: nil
> Receiver's instance variables:
> superclass: Object
> methodDict: a MethodDictionary(#anyButtonPressed->(EventSensor>>#anyButtonPress...etc...
> format: 65545
> instanceVariables: #('mouseButtons' 'mousePosition' 'keyboardBuffer'
> 'interrupt...etc...
> organization: ('accessing' eventQueue eventQueue: eventTicklerProcess
> flushAllB...etc...
> subclasses: nil
> name: #EventSensor
> classPool: a Dictionary(#ButtonDecodeTable->#[0 2 1 3 4 6 5 7 8 10 9
> 11 12 14 1...etc...
> sharedPools: an OrderedCollection(EventSensorConstants)
> environment: Smalltalk
> category: #'Kernel-Processes'
> 
> Preference>>notifyInformeeOfChange
> Receiver: a Preference#swapMouseButtons false
> Arguments and temporary variables:
> 
> Receiver's instance variables:
> name: #swapMouseButtons
> value: false
> defaultValue: false
> helpString: 'if true, swaps mouse buttons 2 and 3'
> localToProject: false
> categoryList: #(#general)
> changeInformee: EventSensor
> changeSelector: #swapMouseButtonsChanged
> type: #Boolean
> 
> Preference>>togglePreferenceValue
> Receiver: a Preference#swapMouseButtons false
> Arguments and temporary variables:
> 
> Receiver's instance variables:
> name: #swapMouseButtons
> value: false
> defaultValue: false
> helpString: 'if true, swaps mouse buttons 2 and 3'
> localToProject: false
> categoryList: #(#general)
> changeInformee: EventSensor
> changeSelector: #swapMouseButtonsChanged
> type: #Boolean
> 
> [] in UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> evt: [367 at 82 mouseUp 99776]
> moreArgs: #()
> Receiver's instance variables:
> bounds: 358 at 75 corner: 372 at 87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358 at 75 corner: 372 at 87
> color: Color blue
> extension: nil
> image: ColorForm(12x12x1)
> offImage: ColorForm(12x12x1)
> pressedImage: ColorForm(12x12x1)
> state: #off
> target: a Preference#swapMouseButtons false
> actionSelector: #togglePreferenceValue
> arguments: #()
> actWhen: #buttonUp
> getSelector: #preferenceValue
> getArgument: nil
> 
> BlockClosure>>ensure:
> Receiver: [closure] in
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:
> Arguments and temporary variables:
> aBlock: [closure] in CursorWithMask(Cursor)>>showWhile:
> complete: nil
> returnValue: nil
> Receiver's instance variables:
> outerContext: UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAct...etc...
> startpc: 62
> numArgs: 0
> 
> CursorWithMask(Cursor)>>showWhile:
> Receiver: ((CursorWithMask
> extent: 16 at 16
> depth: 1
> fromArray: #(
> 2r0
> 2r10000000000000000000000...etc...
> Arguments and temporary variables:
> aBlock: [closure] in
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doBu...etc...
> oldcursor: ((CursorWithMask
> extent: 16 at 16
> depth: 1
> fromArray: #(
> 2r0
> 2r1...etc...
> Receiver's instance variables:
> bits: a Bitmap of length 16
> width: 16
> height: 16
> depth: 1
> offset: -1@ -1
> maskForm: Form(16x16x1)
> 
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> evt: [367 at 82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358 at 75 corner: 372 at 87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358 at 75 corner: 372 at 87
> color: Color blue
> extension: nil
> image: ColorForm(12x12x1)
> offImage: ColorForm(12x12x1)
> pressedImage: ColorForm(12x12x1)
> state: #off
> target: a Preference#swapMouseButtons false
> actionSelector: #togglePreferenceValue
> arguments: #()
> actWhen: #buttonUp
> getSelector: #preferenceValue
> getArgument: nil
> 
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>mouseUp:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> evt: [367 at 82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358 at 75 corner: 372 at 87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358 at 75 corner: 372 at 87
> color: Color blue
> extension: nil
> image: ColorForm(12x12x1)
> offImage: ColorForm(12x12x1)
> pressedImage: ColorForm(12x12x1)
> state: #off
> target: a Preference#swapMouseButtons false
> actionSelector: #togglePreferenceValue
> arguments: #()
> actWhen: #buttonUp
> getSelector: #preferenceValue
> getArgument: nil
> 
> UpdatingThreePhaseButtonMorph>>mouseUp:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> evt: [367 at 82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358 at 75 corner: 372 at 87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358 at 75 corner: 372 at 87
> color: Color blue
> extension: nil
> image: ColorForm(12x12x1)
> offImage: ColorForm(12x12x1)
> pressedImage: ColorForm(12x12x1)
> state: #off
> target: a Preference#swapMouseButtons false
> actionSelector: #togglePreferenceValue
> arguments: #()
> actWhen: #buttonUp
> getSelector: #preferenceValue
> getArgument: nil
> 
> UpdatingThreePhaseButtonMorph(Morph)>>handleMouseUp:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> anEvent: [367 at 82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358 at 75 corner: 372 at 87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358 at 75 corner: 372 at 87
> color: Color blue
> extension: nil
> image: ColorForm(12x12x1)
> offImage: ColorForm(12x12x1)
> pressedImage: ColorForm(12x12x1)
> state: #off
> target: a Preference#swapMouseButtons false
> actionSelector: #togglePreferenceValue
> arguments: #()
> actWhen: #buttonUp
> getSelector: #preferenceValue
> getArgument: nil
> 
> MouseButtonEvent>>sentTo:
> Receiver: [367 at 82 mouseUp 99776]
> Arguments and temporary variables:
> anObject: 3PButton(#togglePreferenceValue 2512237)
> Receiver's instance variables:
> timeStamp: 99776
> source: a HandMorph(3089952)
> type: #mouseUp
> buttons: 0
> position: 367 at 82
> handler: nil
> wasHandled: true
> whichButton: 4
> 
> UpdatingThreePhaseButtonMorph(Morph)>>handleEvent:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> anEvent: [367 at 82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358 at 75 corner: 372 at 87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358 at 75 corner: 372 at 87
> color: Color blue
> extension: nil
> image: ColorForm(12x12x1)
> offImage: ColorForm(12x12x1)
> pressedImage: ColorForm(12x12x1)
> state: #off
> target: a Preference#swapMouseButtons false
> actionSelector: #togglePreferenceValue
> arguments: #()
> actWhen: #buttonUp
> getSelector: #preferenceValue
> getArgument: nil
> 
> UpdatingThreePhaseButtonMorph(Morph)>>handleFocusEvent:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> anEvent: [367 at 82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358 at 75 corner: 372 at 87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358 at 75 corner: 372 at 87
> color: Color blue
> extension: nil
> image: ColorForm(12x12x1)
> offImage: ColorForm(12x12x1)
> pressedImage: ColorForm(12x12x1)
> state: #off
> target: a Preference#swapMouseButtons false
> actionSelector: #togglePreferenceValue
> arguments: #()
> actWhen: #buttonUp
> getSelector: #preferenceValue
> getArgument: nil
> 
> [] in HandMorph>>sendFocusEvent:to:clear:
> Receiver: a HandMorph(3089952)
> Arguments and temporary variables:
> <<error during printing>
> Receiver's instance variables:
> bounds: 263 at 150 corner: 279 at 166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263 at 150 corner: 279 at 166
> color: Color blue
> extension: a MorphExtension (2063753) [eventHandler = an EventHandler]
> mouseFocus: nil
> keyboardFocus: a TextMorphForEditView(3602329)
> eventListeners: nil
> mouseListeners: nil
> keyboardListeners: a WeakArray(a DockingBarMorph(968081) a
> PluggableSystemWindo...etc...
> mouseClickState: nil
> mouseOverHandler: a MouseOverHandler
> lastMouseEvent: [262 at 150 263 at 150 mouseMove 174509]
> targetOffset: 158 at 90
> damageRecorder: a DamageRecorder
> cacheCanvas: nil
> cachedCanvasHasHoles: false
> temporaryCursor: nil
> temporaryCursorOffset: nil
> hardwareCursor: nil
> hasChanged: true
> savedPatch: nil
> userInitials: ''
> lastEventBuffer: #(1 174509 263 150 0 0 0 1)
> genieGestureProcessor: nil
> keyboardInterpreter: an UTF32InputInterpreter
> 
> BlockClosure>>on:do:
> Receiver: [closure] in HandMorph>>sendFocusEvent:to:clear:
> Arguments and temporary variables:
> exception: Error
> handlerAction: [closure] in PasteUpMorph>>becomeActiveDuring:
> handlerActive: false
> Receiver's instance variables:
> outerContext: HandMorph>>sendFocusEvent:to:clear:
> startpc: 67
> numArgs: 0
> 
> PasteUpMorph>>becomeActiveDuring:
> Receiver: a PasteUpMorph(2434915) [world]
> Arguments and temporary variables:
> aBlock: [closure] in HandMorph>>sendFocusEvent:to:clear:
> priorWorld: a PasteUpMorph(2434915) [world]
> priorHand: a HandMorph(3089952)
> priorEvent: [637 at 211 mouseOver red nil]
> Receiver's instance variables:
> bounds: 0 at 0 corner: 801 at 600
> owner: nil
> submorphs: {a PluggableSystemWindow<MessageNotUnderstood: EventSensor
> class>>sw...etc...
> fullBounds: 0 at 0 corner: 801 at 600
> color: Color darkGray
> extension: a MorphExtension (3317156) [eventHandler = an EventHandler]
>  [other:...etc...
> borderWidth: 0
> borderColor: (Color r: 0.515 g: 0.181 b: 0.263)
> presenter: an EtoysPresenter (764729)
> model: a MorphicModel(1457048)
> cursor: 1
> padding: 3
> backgroundMorph: nil
> turtleTrailsForm: nil
> turtlePen: nil
> lastTurtlePositions: nil
> isPartsBin: nil
> indicateCursor: nil
> wantsMouseOverHalos: nil
> worldState: a WorldState
> griddingOn: nil
> 
> HandMorph>>sendFocusEvent:to:clear:
> Receiver: a HandMorph(3089952)
> Arguments and temporary variables:
> anEvent: [637 at 211 mouseUp 99776]
> focusHolder: 3PButton(#togglePreferenceValue 2512237)
> aBlock: [closure] in HandMorph>>sendMouseEvent:
> w: a PasteUpMorph(2434915) [world]
> result: #(nil)
> Receiver's instance variables:
> bounds: 263 at 150 corner: 279 at 166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263 at 150 corner: 279 at 166
> color: Color blue
> extension: a MorphExtension (2063753) [eventHandler = an EventHandler]
> mouseFocus: nil
> keyboardFocus: a TextMorphForEditView(3602329)
> eventListeners: nil
> mouseListeners: nil
> keyboardListeners: a WeakArray(a DockingBarMorph(968081) a
> PluggableSystemWindo...etc...
> mouseClickState: nil
> mouseOverHandler: a MouseOverHandler
> lastMouseEvent: [262 at 150 263 at 150 mouseMove 174509]
> targetOffset: 158 at 90
> damageRecorder: a DamageRecorder
> cacheCanvas: nil
> cachedCanvasHasHoles: false
> temporaryCursor: nil
> temporaryCursorOffset: nil
> hardwareCursor: nil
> hasChanged: true
> savedPatch: nil
> userInitials: ''
> lastEventBuffer: #(1 174509 263 150 0 0 0 1)
> genieGestureProcessor: nil
> keyboardInterpreter: an UTF32InputInterpreter
> 
> HandMorph>>sendEvent:focus:clear:
> Receiver: a HandMorph(3089952)
> Arguments and temporary variables:
> anEvent: [637 at 211 mouseUp 99776]
> focusHolder: 3PButton(#togglePreferenceValue 2512237)
> aBlock: [closure] in HandMorph>>sendMouseEvent:
> result: nil
> Receiver's instance variables:
> bounds: 263 at 150 corner: 279 at 166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263 at 150 corner: 279 at 166
> color: Color blue
> extension: a MorphExtension (2063753) [eventHandler = an EventHandler]
> mouseFocus: nil
> keyboardFocus: a TextMorphForEditView(3602329)
> eventListeners: nil
> mouseListeners: nil
> keyboardListeners: a WeakArray(a DockingBarMorph(968081) a
> PluggableSystemWindo...etc...
> mouseClickState: nil
> mouseOverHandler: a MouseOverHandler
> lastMouseEvent: [262 at 150 263 at 150 mouseMove 174509]
> targetOffset: 158 at 90
> damageRecorder: a DamageRecorder
> cacheCanvas: nil
> cachedCanvasHasHoles: false
> temporaryCursor: nil
> temporaryCursorOffset: nil
> hardwareCursor: nil
> hasChanged: true
> savedPatch: nil
> userInitials: ''
> lastEventBuffer: #(1 174509 263 150 0 0 0 1)
> genieGestureProcessor: nil
> keyboardInterpreter: an UTF32InputInterpreter
> 
> HandMorph>>sendMouseEvent:
> Receiver: a HandMorph(3089952)
> Arguments and temporary variables:
> anEvent: [637 at 211 mouseUp 99776]
> Receiver's instance variables:
> bounds: 263 at 150 corner: 279 at 166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263 at 150 corner: 279 at 166
> color: Color blue
> extension: a MorphExtension (2063753) [eventHandler = an EventHandler]
> mouseFocus: nil
> keyboardFocus: a TextMorphForEditView(3602329)
> eventListeners: nil
> mouseListeners: nil
> keyboardListeners: a WeakArray(a DockingBarMorph(968081) a
> PluggableSystemWindo...etc...
> mouseClickState: nil
> mouseOverHandler: a MouseOverHandler
> lastMouseEvent: [262 at 150 263 at 150 mouseMove 174509]
> targetOffset: 158 at 90
> damageRecorder: a DamageRecorder
> cacheCanvas: nil
> cachedCanvasHasHoles: false
> temporaryCursor: nil
> temporaryCursorOffset: nil
> hardwareCursor: nil
> hasChanged: true
> savedPatch: nil
> userInitials: ''
> lastEventBuffer: #(1 174509 263 150 0 0 0 1)
> genieGestureProcessor: nil
> keyboardInterpreter: an UTF32InputInterpreter
> 
> 
> --- The full stack ---
> EventSensor class(Object)>>doesNotUnderstand: #swapMouseButtonsChanged
> Preference>>notifyInformeeOfChange
> Preference>>togglePreferenceValue
> [] in UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:
> BlockClosure>>ensure:
> CursorWithMask(Cursor)>>showWhile:
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>mouseUp:
> UpdatingThreePhaseButtonMorph>>mouseUp:
> UpdatingThreePhaseButtonMorph(Morph)>>handleMouseUp:
> MouseButtonEvent>>sentTo:
> UpdatingThreePhaseButtonMorph(Morph)>>handleEvent:
> UpdatingThreePhaseButtonMorph(Morph)>>handleFocusEvent:
> [] in HandMorph>>sendFocusEvent:to:clear:
> BlockClosure>>on:do:
> PasteUpMorph>>becomeActiveDuring:
> HandMorph>>sendFocusEvent:to:clear:
> HandMorph>>sendEvent:focus:clear:
> HandMorph>>sendMouseEvent:
>  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> HandMorph>>handleEvent:
> HandMorph>>processEvents
> [] in WorldState>>doOneCycleNowFor:
> Array(SequenceableCollection)>>do:
> WorldState>>handsDo:
> WorldState>>doOneCycleNowFor:
> WorldState>>doOneCycleFor:
> PasteUpMorph>>doOneCycle
> [] in MorphicProject>>spawnNewProcess
> [] in BlockClosure>>newProcess


More information about the Squeak-dev mailing list