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