<div dir="ltr">The preference is made automatically.<div>In ReleaseBuilder class setPreference</div><div> Preference enable: #swapMouseButtons</div><div><br></div><div>The preference is made if it is not in the image already.</div><div><br></div><div>I think the #swapMouseButtonChanged is also made automatically and derived from the preference name if not set specifically.</div><div><br></div><div>Best,</div><div>Karl</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 2, 2016 at 1:35 AM, David T. Lewis <span dir="ltr"><<a href="mailto:lewis@mail.msen.com" target="_blank">lewis@mail.msen.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It looks like the preference has changed. For the #swapMouseButtons preference,<br>
the changeSelector was #installMouseDecodeTable, but now the selector is<br>
#swapMouseButtonsChanged.<br>
<br>
If I inspect the preference and change its changeSelector back to the original<br>
#installMouseDecodeTable, the preference works again.<br>
<br>
I cannot find where the preference gets initialized, and I do not know why it<br>
changed, but this does seem to be the cause of the problem.<br>
<br>
Dave<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
On Tue, Mar 01, 2016 at 04:45:44PM -0600, Chris Muller wrote:<br>
> EventSensor class(Object)>>doesNotUnderstand: #swapMouseButtonsChanged<br>
> Receiver: EventSensor<br>
> Arguments and temporary variables:<br>
> aMessage: swapMouseButtonsChanged<br>
> exception: MessageNotUnderstood: EventSensor class>>swapMouseButtonsChanged<br>
> resumeValue: nil<br>
> Receiver's instance variables:<br>
> superclass: Object<br>
> methodDict: a MethodDictionary(#anyButtonPressed->(EventSensor>>#anyButtonPress...etc...<br>
> format: 65545<br>
> instanceVariables: #('mouseButtons' 'mousePosition' 'keyboardBuffer'<br>
> 'interrupt...etc...<br>
> organization: ('accessing' eventQueue eventQueue: eventTicklerProcess<br>
> flushAllB...etc...<br>
> subclasses: nil<br>
> name: #EventSensor<br>
> classPool: a Dictionary(#ButtonDecodeTable->#[0 2 1 3 4 6 5 7 8 10 9<br>
> 11 12 14 1...etc...<br>
> sharedPools: an OrderedCollection(EventSensorConstants)<br>
> environment: Smalltalk<br>
> category: #'Kernel-Processes'<br>
><br>
> Preference>>notifyInformeeOfChange<br>
> Receiver: a Preference#swapMouseButtons false<br>
> Arguments and temporary variables:<br>
><br>
> Receiver's instance variables:<br>
> name: #swapMouseButtons<br>
> value: false<br>
> defaultValue: false<br>
> helpString: 'if true, swaps mouse buttons 2 and 3'<br>
> localToProject: false<br>
> categoryList: #(#general)<br>
> changeInformee: EventSensor<br>
> changeSelector: #swapMouseButtonsChanged<br>
> type: #Boolean<br>
><br>
> Preference>>togglePreferenceValue<br>
> Receiver: a Preference#swapMouseButtons false<br>
> Arguments and temporary variables:<br>
><br>
> Receiver's instance variables:<br>
> name: #swapMouseButtons<br>
> value: false<br>
> defaultValue: false<br>
> helpString: 'if true, swaps mouse buttons 2 and 3'<br>
> localToProject: false<br>
> categoryList: #(#general)<br>
> changeInformee: EventSensor<br>
> changeSelector: #swapMouseButtonsChanged<br>
> type: #Boolean<br>
><br>
> [] in UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:<br>
> Receiver: 3PButton(#togglePreferenceValue 2512237)<br>
> Arguments and temporary variables:<br>
> evt: [367@82 mouseUp 99776]<br>
> moreArgs: #()<br>
> Receiver's instance variables:<br>
> bounds: 358@75 corner: 372@87<br>
> owner: a BorderedMorph(1400912)<br>
> submorphs: #()<br>
> fullBounds: 358@75 corner: 372@87<br>
> color: Color blue<br>
> extension: nil<br>
> image: ColorForm(12x12x1)<br>
> offImage: ColorForm(12x12x1)<br>
> pressedImage: ColorForm(12x12x1)<br>
> state: #off<br>
> target: a Preference#swapMouseButtons false<br>
> actionSelector: #togglePreferenceValue<br>
> arguments: #()<br>
> actWhen: #buttonUp<br>
> getSelector: #preferenceValue<br>
> getArgument: nil<br>
><br>
> BlockClosure>>ensure:<br>
> Receiver: [closure] in<br>
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:<br>
> Arguments and temporary variables:<br>
> aBlock: [closure] in CursorWithMask(Cursor)>>showWhile:<br>
> complete: nil<br>
> returnValue: nil<br>
> Receiver's instance variables:<br>
> outerContext: UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAct...etc...<br>
> startpc: 62<br>
> numArgs: 0<br>
><br>
> CursorWithMask(Cursor)>>showWhile:<br>
> Receiver: ((CursorWithMask<br>
> extent: 16@16<br>
> depth: 1<br>
> fromArray: #(<br>
> 2r0<br>
> 2r10000000000000000000000...etc...<br>
> Arguments and temporary variables:<br>
> aBlock: [closure] in<br>
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doBu...etc...<br>
> oldcursor: ((CursorWithMask<br>
> extent: 16@16<br>
> depth: 1<br>
> fromArray: #(<br>
> 2r0<br>
> 2r1...etc...<br>
> Receiver's instance variables:<br>
> bits: a Bitmap of length 16<br>
> width: 16<br>
> height: 16<br>
> depth: 1<br>
> offset: -1@ -1<br>
> maskForm: Form(16x16x1)<br>
><br>
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:<br>
> Receiver: 3PButton(#togglePreferenceValue 2512237)<br>
> Arguments and temporary variables:<br>
> evt: [367@82 mouseUp 99776]<br>
> Receiver's instance variables:<br>
> bounds: 358@75 corner: 372@87<br>
> owner: a BorderedMorph(1400912)<br>
> submorphs: #()<br>
> fullBounds: 358@75 corner: 372@87<br>
> color: Color blue<br>
> extension: nil<br>
> image: ColorForm(12x12x1)<br>
> offImage: ColorForm(12x12x1)<br>
> pressedImage: ColorForm(12x12x1)<br>
> state: #off<br>
> target: a Preference#swapMouseButtons false<br>
> actionSelector: #togglePreferenceValue<br>
> arguments: #()<br>
> actWhen: #buttonUp<br>
> getSelector: #preferenceValue<br>
> getArgument: nil<br>
><br>
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>mouseUp:<br>
> Receiver: 3PButton(#togglePreferenceValue 2512237)<br>
> Arguments and temporary variables:<br>
> evt: [367@82 mouseUp 99776]<br>
> Receiver's instance variables:<br>
> bounds: 358@75 corner: 372@87<br>
> owner: a BorderedMorph(1400912)<br>
> submorphs: #()<br>
> fullBounds: 358@75 corner: 372@87<br>
> color: Color blue<br>
> extension: nil<br>
> image: ColorForm(12x12x1)<br>
> offImage: ColorForm(12x12x1)<br>
> pressedImage: ColorForm(12x12x1)<br>
> state: #off<br>
> target: a Preference#swapMouseButtons false<br>
> actionSelector: #togglePreferenceValue<br>
> arguments: #()<br>
> actWhen: #buttonUp<br>
> getSelector: #preferenceValue<br>
> getArgument: nil<br>
><br>
> UpdatingThreePhaseButtonMorph>>mouseUp:<br>
> Receiver: 3PButton(#togglePreferenceValue 2512237)<br>
> Arguments and temporary variables:<br>
> evt: [367@82 mouseUp 99776]<br>
> Receiver's instance variables:<br>
> bounds: 358@75 corner: 372@87<br>
> owner: a BorderedMorph(1400912)<br>
> submorphs: #()<br>
> fullBounds: 358@75 corner: 372@87<br>
> color: Color blue<br>
> extension: nil<br>
> image: ColorForm(12x12x1)<br>
> offImage: ColorForm(12x12x1)<br>
> pressedImage: ColorForm(12x12x1)<br>
> state: #off<br>
> target: a Preference#swapMouseButtons false<br>
> actionSelector: #togglePreferenceValue<br>
> arguments: #()<br>
> actWhen: #buttonUp<br>
> getSelector: #preferenceValue<br>
> getArgument: nil<br>
><br>
> UpdatingThreePhaseButtonMorph(Morph)>>handleMouseUp:<br>
> Receiver: 3PButton(#togglePreferenceValue 2512237)<br>
> Arguments and temporary variables:<br>
> anEvent: [367@82 mouseUp 99776]<br>
> Receiver's instance variables:<br>
> bounds: 358@75 corner: 372@87<br>
> owner: a BorderedMorph(1400912)<br>
> submorphs: #()<br>
> fullBounds: 358@75 corner: 372@87<br>
> color: Color blue<br>
> extension: nil<br>
> image: ColorForm(12x12x1)<br>
> offImage: ColorForm(12x12x1)<br>
> pressedImage: ColorForm(12x12x1)<br>
> state: #off<br>
> target: a Preference#swapMouseButtons false<br>
> actionSelector: #togglePreferenceValue<br>
> arguments: #()<br>
> actWhen: #buttonUp<br>
> getSelector: #preferenceValue<br>
> getArgument: nil<br>
><br>
> MouseButtonEvent>>sentTo:<br>
> Receiver: [367@82 mouseUp 99776]<br>
> Arguments and temporary variables:<br>
> anObject: 3PButton(#togglePreferenceValue 2512237)<br>
> Receiver's instance variables:<br>
> timeStamp: 99776<br>
> source: a HandMorph(3089952)<br>
> type: #mouseUp<br>
> buttons: 0<br>
> position: 367@82<br>
> handler: nil<br>
> wasHandled: true<br>
> whichButton: 4<br>
><br>
> UpdatingThreePhaseButtonMorph(Morph)>>handleEvent:<br>
> Receiver: 3PButton(#togglePreferenceValue 2512237)<br>
> Arguments and temporary variables:<br>
> anEvent: [367@82 mouseUp 99776]<br>
> Receiver's instance variables:<br>
> bounds: 358@75 corner: 372@87<br>
> owner: a BorderedMorph(1400912)<br>
> submorphs: #()<br>
> fullBounds: 358@75 corner: 372@87<br>
> color: Color blue<br>
> extension: nil<br>
> image: ColorForm(12x12x1)<br>
> offImage: ColorForm(12x12x1)<br>
> pressedImage: ColorForm(12x12x1)<br>
> state: #off<br>
> target: a Preference#swapMouseButtons false<br>
> actionSelector: #togglePreferenceValue<br>
> arguments: #()<br>
> actWhen: #buttonUp<br>
> getSelector: #preferenceValue<br>
> getArgument: nil<br>
><br>
> UpdatingThreePhaseButtonMorph(Morph)>>handleFocusEvent:<br>
> Receiver: 3PButton(#togglePreferenceValue 2512237)<br>
> Arguments and temporary variables:<br>
> anEvent: [367@82 mouseUp 99776]<br>
> Receiver's instance variables:<br>
> bounds: 358@75 corner: 372@87<br>
> owner: a BorderedMorph(1400912)<br>
> submorphs: #()<br>
> fullBounds: 358@75 corner: 372@87<br>
> color: Color blue<br>
> extension: nil<br>
> image: ColorForm(12x12x1)<br>
> offImage: ColorForm(12x12x1)<br>
> pressedImage: ColorForm(12x12x1)<br>
> state: #off<br>
> target: a Preference#swapMouseButtons false<br>
> actionSelector: #togglePreferenceValue<br>
> arguments: #()<br>
> actWhen: #buttonUp<br>
> getSelector: #preferenceValue<br>
> getArgument: nil<br>
><br>
> [] in HandMorph>>sendFocusEvent:to:clear:<br>
> Receiver: a HandMorph(3089952)<br>
> Arguments and temporary variables:<br>
> <<error during printing><br>
> Receiver's instance variables:<br>
> bounds: 263@150 corner: 279@166<br>
> owner: a PasteUpMorph(2434915) [world]<br>
> submorphs: #()<br>
> fullBounds: 263@150 corner: 279@166<br>
> color: Color blue<br>
> extension: a MorphExtension (2063753) [eventHandler = an EventHandler]<br>
> mouseFocus: nil<br>
> keyboardFocus: a TextMorphForEditView(3602329)<br>
> eventListeners: nil<br>
> mouseListeners: nil<br>
> keyboardListeners: a WeakArray(a DockingBarMorph(968081) a<br>
> PluggableSystemWindo...etc...<br>
> mouseClickState: nil<br>
> mouseOverHandler: a MouseOverHandler<br>
> lastMouseEvent: [262@150 263@150 mouseMove 174509]<br>
> targetOffset: 158@90<br>
> damageRecorder: a DamageRecorder<br>
> cacheCanvas: nil<br>
> cachedCanvasHasHoles: false<br>
> temporaryCursor: nil<br>
> temporaryCursorOffset: nil<br>
> hardwareCursor: nil<br>
> hasChanged: true<br>
> savedPatch: nil<br>
> userInitials: ''<br>
> lastEventBuffer: #(1 174509 263 150 0 0 0 1)<br>
> genieGestureProcessor: nil<br>
> keyboardInterpreter: an UTF32InputInterpreter<br>
><br>
> BlockClosure>>on:do:<br>
> Receiver: [closure] in HandMorph>>sendFocusEvent:to:clear:<br>
> Arguments and temporary variables:<br>
> exception: Error<br>
> handlerAction: [closure] in PasteUpMorph>>becomeActiveDuring:<br>
> handlerActive: false<br>
> Receiver's instance variables:<br>
> outerContext: HandMorph>>sendFocusEvent:to:clear:<br>
> startpc: 67<br>
> numArgs: 0<br>
><br>
> PasteUpMorph>>becomeActiveDuring:<br>
> Receiver: a PasteUpMorph(2434915) [world]<br>
> Arguments and temporary variables:<br>
> aBlock: [closure] in HandMorph>>sendFocusEvent:to:clear:<br>
> priorWorld: a PasteUpMorph(2434915) [world]<br>
> priorHand: a HandMorph(3089952)<br>
> priorEvent: [637@211 mouseOver red nil]<br>
> Receiver's instance variables:<br>
> bounds: 0@0 corner: 801@600<br>
> owner: nil<br>
> submorphs: {a PluggableSystemWindow<MessageNotUnderstood: EventSensor<br>
> class>>sw...etc...<br>
> fullBounds: 0@0 corner: 801@600<br>
> color: Color darkGray<br>
> extension: a MorphExtension (3317156) [eventHandler = an EventHandler]<br>
> [other:...etc...<br>
> borderWidth: 0<br>
> borderColor: (Color r: 0.515 g: 0.181 b: 0.263)<br>
> presenter: an EtoysPresenter (764729)<br>
> model: a MorphicModel(1457048)<br>
> cursor: 1<br>
> padding: 3<br>
> backgroundMorph: nil<br>
> turtleTrailsForm: nil<br>
> turtlePen: nil<br>
> lastTurtlePositions: nil<br>
> isPartsBin: nil<br>
> indicateCursor: nil<br>
> wantsMouseOverHalos: nil<br>
> worldState: a WorldState<br>
> griddingOn: nil<br>
><br>
> HandMorph>>sendFocusEvent:to:clear:<br>
> Receiver: a HandMorph(3089952)<br>
> Arguments and temporary variables:<br>
> anEvent: [637@211 mouseUp 99776]<br>
> focusHolder: 3PButton(#togglePreferenceValue 2512237)<br>
> aBlock: [closure] in HandMorph>>sendMouseEvent:<br>
> w: a PasteUpMorph(2434915) [world]<br>
> result: #(nil)<br>
> Receiver's instance variables:<br>
> bounds: 263@150 corner: 279@166<br>
> owner: a PasteUpMorph(2434915) [world]<br>
> submorphs: #()<br>
> fullBounds: 263@150 corner: 279@166<br>
> color: Color blue<br>
> extension: a MorphExtension (2063753) [eventHandler = an EventHandler]<br>
> mouseFocus: nil<br>
> keyboardFocus: a TextMorphForEditView(3602329)<br>
> eventListeners: nil<br>
> mouseListeners: nil<br>
> keyboardListeners: a WeakArray(a DockingBarMorph(968081) a<br>
> PluggableSystemWindo...etc...<br>
> mouseClickState: nil<br>
> mouseOverHandler: a MouseOverHandler<br>
> lastMouseEvent: [262@150 263@150 mouseMove 174509]<br>
> targetOffset: 158@90<br>
> damageRecorder: a DamageRecorder<br>
> cacheCanvas: nil<br>
> cachedCanvasHasHoles: false<br>
> temporaryCursor: nil<br>
> temporaryCursorOffset: nil<br>
> hardwareCursor: nil<br>
> hasChanged: true<br>
> savedPatch: nil<br>
> userInitials: ''<br>
> lastEventBuffer: #(1 174509 263 150 0 0 0 1)<br>
> genieGestureProcessor: nil<br>
> keyboardInterpreter: an UTF32InputInterpreter<br>
><br>
> HandMorph>>sendEvent:focus:clear:<br>
> Receiver: a HandMorph(3089952)<br>
> Arguments and temporary variables:<br>
> anEvent: [637@211 mouseUp 99776]<br>
> focusHolder: 3PButton(#togglePreferenceValue 2512237)<br>
> aBlock: [closure] in HandMorph>>sendMouseEvent:<br>
> result: nil<br>
> Receiver's instance variables:<br>
> bounds: 263@150 corner: 279@166<br>
> owner: a PasteUpMorph(2434915) [world]<br>
> submorphs: #()<br>
> fullBounds: 263@150 corner: 279@166<br>
> color: Color blue<br>
> extension: a MorphExtension (2063753) [eventHandler = an EventHandler]<br>
> mouseFocus: nil<br>
> keyboardFocus: a TextMorphForEditView(3602329)<br>
> eventListeners: nil<br>
> mouseListeners: nil<br>
> keyboardListeners: a WeakArray(a DockingBarMorph(968081) a<br>
> PluggableSystemWindo...etc...<br>
> mouseClickState: nil<br>
> mouseOverHandler: a MouseOverHandler<br>
> lastMouseEvent: [262@150 263@150 mouseMove 174509]<br>
> targetOffset: 158@90<br>
> damageRecorder: a DamageRecorder<br>
> cacheCanvas: nil<br>
> cachedCanvasHasHoles: false<br>
> temporaryCursor: nil<br>
> temporaryCursorOffset: nil<br>
> hardwareCursor: nil<br>
> hasChanged: true<br>
> savedPatch: nil<br>
> userInitials: ''<br>
> lastEventBuffer: #(1 174509 263 150 0 0 0 1)<br>
> genieGestureProcessor: nil<br>
> keyboardInterpreter: an UTF32InputInterpreter<br>
><br>
> HandMorph>>sendMouseEvent:<br>
> Receiver: a HandMorph(3089952)<br>
> Arguments and temporary variables:<br>
> anEvent: [637@211 mouseUp 99776]<br>
> Receiver's instance variables:<br>
> bounds: 263@150 corner: 279@166<br>
> owner: a PasteUpMorph(2434915) [world]<br>
> submorphs: #()<br>
> fullBounds: 263@150 corner: 279@166<br>
> color: Color blue<br>
> extension: a MorphExtension (2063753) [eventHandler = an EventHandler]<br>
> mouseFocus: nil<br>
> keyboardFocus: a TextMorphForEditView(3602329)<br>
> eventListeners: nil<br>
> mouseListeners: nil<br>
> keyboardListeners: a WeakArray(a DockingBarMorph(968081) a<br>
> PluggableSystemWindo...etc...<br>
> mouseClickState: nil<br>
> mouseOverHandler: a MouseOverHandler<br>
> lastMouseEvent: [262@150 263@150 mouseMove 174509]<br>
> targetOffset: 158@90<br>
> damageRecorder: a DamageRecorder<br>
> cacheCanvas: nil<br>
> cachedCanvasHasHoles: false<br>
> temporaryCursor: nil<br>
> temporaryCursorOffset: nil<br>
> hardwareCursor: nil<br>
> hasChanged: true<br>
> savedPatch: nil<br>
> userInitials: ''<br>
> lastEventBuffer: #(1 174509 263 150 0 0 0 1)<br>
> genieGestureProcessor: nil<br>
> keyboardInterpreter: an UTF32InputInterpreter<br>
><br>
><br>
> --- The full stack ---<br>
> EventSensor class(Object)>>doesNotUnderstand: #swapMouseButtonsChanged<br>
> Preference>>notifyInformeeOfChange<br>
> Preference>>togglePreferenceValue<br>
> [] in UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:<br>
> BlockClosure>>ensure:<br>
> CursorWithMask(Cursor)>>showWhile:<br>
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doButtonAction:<br>
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>mouseUp:<br>
> UpdatingThreePhaseButtonMorph>>mouseUp:<br>
> UpdatingThreePhaseButtonMorph(Morph)>>handleMouseUp:<br>
> MouseButtonEvent>>sentTo:<br>
> UpdatingThreePhaseButtonMorph(Morph)>>handleEvent:<br>
> UpdatingThreePhaseButtonMorph(Morph)>>handleFocusEvent:<br>
> [] in HandMorph>>sendFocusEvent:to:clear:<br>
> BlockClosure>>on:do:<br>
> PasteUpMorph>>becomeActiveDuring:<br>
> HandMorph>>sendFocusEvent:to:clear:<br>
> HandMorph>>sendEvent:focus:clear:<br>
> HandMorph>>sendMouseEvent:<br>
> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>
> HandMorph>>handleEvent:<br>
> HandMorph>>processEvents<br>
> [] in WorldState>>doOneCycleNowFor:<br>
> Array(SequenceableCollection)>>do:<br>
> WorldState>>handsDo:<br>
> WorldState>>doOneCycleNowFor:<br>
> WorldState>>doOneCycleFor:<br>
> PasteUpMorph>>doOneCycle<br>
> [] in MorphicProject>>spawnNewProcess<br>
> [] in BlockClosure>>newProcess<br>
<br>
</div></div></blockquote></div><br></div>