swapMouseButtons broken in trunk

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
34 messages Options
12
Reply | Threaded
Open this post in threaded view
|

swapMouseButtons broken in trunk

Chris Muller-3
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@82 mouseUp 99776]
moreArgs: #()
Receiver's instance variables:
bounds: 358@75 corner: 372@87
owner: a BorderedMorph(1400912)
submorphs: #()
fullBounds: 358@75 corner: 372@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@16
depth: 1
fromArray: #(
2r0
2r10000000000000000000000...etc...
Arguments and temporary variables:
aBlock: [closure] in
UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doBu...etc...
oldcursor: ((CursorWithMask
extent: 16@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@82 mouseUp 99776]
Receiver's instance variables:
bounds: 358@75 corner: 372@87
owner: a BorderedMorph(1400912)
submorphs: #()
fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
Receiver's instance variables:
bounds: 358@75 corner: 372@87
owner: a BorderedMorph(1400912)
submorphs: #()
fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
Receiver's instance variables:
bounds: 358@75 corner: 372@87
owner: a BorderedMorph(1400912)
submorphs: #()
fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
Receiver's instance variables:
bounds: 358@75 corner: 372@87
owner: a BorderedMorph(1400912)
submorphs: #()
fullBounds: 358@75 corner: 372@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@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@82
handler: nil
wasHandled: true
whichButton: 4

UpdatingThreePhaseButtonMorph(Morph)>>handleEvent:
Receiver: 3PButton(#togglePreferenceValue 2512237)
Arguments and temporary variables:
anEvent: [367@82 mouseUp 99776]
Receiver's instance variables:
bounds: 358@75 corner: 372@87
owner: a BorderedMorph(1400912)
submorphs: #()
fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
Receiver's instance variables:
bounds: 358@75 corner: 372@87
owner: a BorderedMorph(1400912)
submorphs: #()
fullBounds: 358@75 corner: 372@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@150 corner: 279@166
owner: a PasteUpMorph(2434915) [world]
submorphs: #()
fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
targetOffset: 158@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@211 mouseOver red nil]
Receiver's instance variables:
bounds: 0@0 corner: 801@600
owner: nil
submorphs: {a PluggableSystemWindow<MessageNotUnderstood: EventSensor
class>>sw...etc...
fullBounds: 0@0 corner: 801@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@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@150 corner: 279@166
owner: a PasteUpMorph(2434915) [world]
submorphs: #()
fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
targetOffset: 158@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@211 mouseUp 99776]
focusHolder: 3PButton(#togglePreferenceValue 2512237)
aBlock: [closure] in HandMorph>>sendMouseEvent:
result: nil
Receiver's instance variables:
bounds: 263@150 corner: 279@166
owner: a PasteUpMorph(2434915) [world]
submorphs: #()
fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
targetOffset: 158@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@211 mouseUp 99776]
Receiver's instance variables:
bounds: 263@150 corner: 279@166
owner: a PasteUpMorph(2434915) [world]
submorphs: #()
fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
targetOffset: 158@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

Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

David T. Lewis
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@82 mouseUp 99776]
> moreArgs: #()
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@16
> depth: 1
> fromArray: #(
> 2r0
> 2r10000000000000000000000...etc...
> Arguments and temporary variables:
> aBlock: [closure] in
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doBu...etc...
> oldcursor: ((CursorWithMask
> extent: 16@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@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@82
> handler: nil
> wasHandled: true
> whichButton: 4
>
> UpdatingThreePhaseButtonMorph(Morph)>>handleEvent:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> anEvent: [367@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@150 corner: 279@166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
> targetOffset: 158@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@211 mouseOver red nil]
> Receiver's instance variables:
> bounds: 0@0 corner: 801@600
> owner: nil
> submorphs: {a PluggableSystemWindow<MessageNotUnderstood: EventSensor
> class>>sw...etc...
> fullBounds: 0@0 corner: 801@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@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@150 corner: 279@166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
> targetOffset: 158@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@211 mouseUp 99776]
> focusHolder: 3PButton(#togglePreferenceValue 2512237)
> aBlock: [closure] in HandMorph>>sendMouseEvent:
> result: nil
> Receiver's instance variables:
> bounds: 263@150 corner: 279@166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
> targetOffset: 158@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@211 mouseUp 99776]
> Receiver's instance variables:
> bounds: 263@150 corner: 279@166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
> targetOffset: 158@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

Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Karl Ramberg
The preference is made automatically.
In ReleaseBuilder class setPreference
  Preference enable: #swapMouseButtons

The preference is made if it is not in the image already.

I think the #swapMouseButtonChanged is also made automatically and derived from the preference name if not set specifically.

Best,
Karl

On Wed, Mar 2, 2016 at 1:35 AM, David T. Lewis <[hidden email]> wrote:
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@82 mouseUp 99776]
> moreArgs: #()
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@16
> depth: 1
> fromArray: #(
> 2r0
> 2r10000000000000000000000...etc...
> Arguments and temporary variables:
> aBlock: [closure] in
> UpdatingThreePhaseButtonMorph(ThreePhaseButtonMorph)>>doBu...etc...
> oldcursor: ((CursorWithMask
> extent: 16@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@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@82
> handler: nil
> wasHandled: true
> whichButton: 4
>
> UpdatingThreePhaseButtonMorph(Morph)>>handleEvent:
> Receiver: 3PButton(#togglePreferenceValue 2512237)
> Arguments and temporary variables:
> anEvent: [367@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@82 mouseUp 99776]
> Receiver's instance variables:
> bounds: 358@75 corner: 372@87
> owner: a BorderedMorph(1400912)
> submorphs: #()
> fullBounds: 358@75 corner: 372@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@150 corner: 279@166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
> targetOffset: 158@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@211 mouseOver red nil]
> Receiver's instance variables:
> bounds: 0@0 corner: 801@600
> owner: nil
> submorphs: {a PluggableSystemWindow<MessageNotUnderstood: EventSensor
> class>>sw...etc...
> fullBounds: 0@0 corner: 801@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@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@150 corner: 279@166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
> targetOffset: 158@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@211 mouseUp 99776]
> focusHolder: 3PButton(#togglePreferenceValue 2512237)
> aBlock: [closure] in HandMorph>>sendMouseEvent:
> result: nil
> Receiver's instance variables:
> bounds: 263@150 corner: 279@166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
> targetOffset: 158@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@211 mouseUp 99776]
> Receiver's instance variables:
> bounds: 263@150 corner: 279@166
> owner: a PasteUpMorph(2434915) [world]
> submorphs: #()
> fullBounds: 263@150 corner: 279@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@150 263@150 mouseMove 174509]
> targetOffset: 158@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




Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

marcel.taeumel
Hi, there!

I restored some other messages that got lost and made it consistent with the key-duplication things in EventSensor:

http://forum.world.st/The-Trunk-Kernel-mt-1003-mcz-td4881980.html

Best,
Marcel
Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Karl Ramberg
Nice.
BTW: there is a lot of empty categories in the Preferences class.
We must remove those in a post script or something.
Preferences organization removeEmptyCategories

I'm not sure how to do it ?

Add it in a package preamble ?
Does we then need to remove the preamble again ?

Best,
Karl


On Wed, Mar 2, 2016 at 12:44 PM, marcel.taeumel <[hidden email]> wrote:
Hi, there!

I restored some other messages that got lost and made it consistent with the
key-duplication things in EventSensor:

http://forum.world.st/The-Trunk-Kernel-mt-1003-mcz-td4881980.html

Best,
Marcel



--
View this message in context: http://forum.world.st/swapMouseButtons-broken-in-trunk-tp4881884p4881981.html
Sent from the Squeak - Dev mailing list archive at Nabble.com.




Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Chris Muller-3
In reply to this post by marcel.taeumel
Marcel, do you know why I don't find any senders of #swapMouseButtonsChanged?

Is it some kind of magic assembling of some String somewhere and then
sending it #asSymbol and then performing it?

If so, how about we consider aligning our implementations with the IDE
tools and the way people use them?  With no senders, we know someone
will feel inclined to "clean" this someday.

If we must do that magic, perhaps at least putting some kind of marker
statement like this in the relevant methods:

    'this method performs ' -> #swapMouseButtonsChanged.

so that all the usual tools will lead future readers to easily figure
things out.

On Wed, Mar 2, 2016 at 5:44 AM, marcel.taeumel <[hidden email]> wrote:

> Hi, there!
>
> I restored some other messages that got lost and made it consistent with the
> key-duplication things in EventSensor:
>
> http://forum.world.st/The-Trunk-Kernel-mt-1003-mcz-td4881980.html
>
> Best,
> Marcel
>
>
>
> --
> View this message in context: http://forum.world.st/swapMouseButtons-broken-in-trunk-tp4881884p4881981.html
> Sent from the Squeak - Dev mailing list archive at Nabble.com.
>

Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Bert Freudenberg

> On 03.03.2016, at 21:42, Chris Muller <[hidden email]> wrote:
>
> Marcel, do you know why I don't find any senders of #swapMouseButtonsChanged?

Inspect #swapMouseButtonsChanged and “explore pointers” ;)

- Bert -






smime.p7s (5K) Download Attachment
cbc
Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

cbc
In reply to this post by Karl Ramberg


On Thu, Mar 3, 2016 at 12:31 PM, karl ramberg <[hidden email]> wrote:
Nice.
BTW: there is a lot of empty categories in the Preferences class.
We must remove those in a post script or something.
Preferences organization removeEmptyCategories

I'm not sure how to do it ?

Add it in a package preamble ?
Does we then need to remove the preamble again ?

If I remember right, the preamble (and postlude?) only get run once - when they are first changed.  After that, they are skipped.
This means you want to leave them in and not remove them - otherwise a person later on would update from Trunk and just get the latest version - which doesn't have the preamble - and the work wouldn't be done.

Or am I wrong, and this only happens with Class initialization?

-cbc 

Best,
Karl


On Wed, Mar 2, 2016 at 12:44 PM, marcel.taeumel <[hidden email]> wrote:
Hi, there!

I restored some other messages that got lost and made it consistent with the
key-duplication things in EventSensor:

http://forum.world.st/The-Trunk-Kernel-mt-1003-mcz-td4881980.html

Best,
Marcel



--
View this message in context: http://forum.world.st/swapMouseButtons-broken-in-trunk-tp4881884p4881981.html
Sent from the Squeak - Dev mailing list archive at Nabble.com.








Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Karl Ramberg
I'm also not not sure how this works :-(

Best,
 Karl

On Thu, Mar 3, 2016 at 11:28 PM, Chris Cunningham <[hidden email]> wrote:


On Thu, Mar 3, 2016 at 12:31 PM, karl ramberg <[hidden email]> wrote:
Nice.
BTW: there is a lot of empty categories in the Preferences class.
We must remove those in a post script or something.
Preferences organization removeEmptyCategories

I'm not sure how to do it ?

Add it in a package preamble ?
Does we then need to remove the preamble again ?

If I remember right, the preamble (and postlude?) only get run once - when they are first changed.  After that, they are skipped.
This means you want to leave them in and not remove them - otherwise a person later on would update from Trunk and just get the latest version - which doesn't have the preamble - and the work wouldn't be done.

Or am I wrong, and this only happens with Class initialization?

-cbc 

Best,
Karl


On Wed, Mar 2, 2016 at 12:44 PM, marcel.taeumel <[hidden email]> wrote:
Hi, there!

I restored some other messages that got lost and made it consistent with the
key-duplication things in EventSensor:

http://forum.world.st/The-Trunk-Kernel-mt-1003-mcz-td4881980.html

Best,
Marcel



--
View this message in context: http://forum.world.st/swapMouseButtons-broken-in-trunk-tp4881884p4881981.html
Sent from the Squeak - Dev mailing list archive at Nabble.com.












Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Bert Freudenberg
In reply to this post by cbc
On 03.03.2016, at 23:28, Chris Cunningham <[hidden email]> wrote:

On Thu, Mar 3, 2016 at 12:31 PM, karl ramberg <[hidden email]> wrote:
Nice.
BTW: there is a lot of empty categories in the Preferences class.
We must remove those in a post script or something.
Preferences organization removeEmptyCategories

I'm not sure how to do it ?

Add it in a package preamble ?
Does we then need to remove the preamble again ?

If I remember right, the preamble (and postlude?) only get run once - when they are first changed.  After that, they are skipped.
This means you want to leave them in and not remove them - otherwise a person later on would update from Trunk and just get the latest version - which doesn't have the preamble - and the work wouldn't be done.

Or am I wrong, and this only happens with Class initialization?

It happens exactly the same as with class initialization:

If the definition (of the script or method) changed, it gets executed.

You cannot rely on it having executed, or it only executing once. It’s better to write it in a way that running it again does no harm.

We can force execution by issuing an update map, but it’s better to avoid that.

For the problem at hand (empty method categories) we also could just add a step to the release builder to ensure all categories are clean.

- Bert -






smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Karl Ramberg


On Fri, Mar 4, 2016 at 3:25 PM, Bert Freudenberg <[hidden email]> wrote:
On 03.03.2016, at 23:28, Chris Cunningham <[hidden email]> wrote:

On Thu, Mar 3, 2016 at 12:31 PM, karl ramberg <[hidden email]> wrote:
Nice.
BTW: there is a lot of empty categories in the Preferences class.
We must remove those in a post script or something.
Preferences organization removeEmptyCategories

I'm not sure how to do it ?

Add it in a package preamble ?
Does we then need to remove the preamble again ?

If I remember right, the preamble (and postlude?) only get run once - when they are first changed.  After that, they are skipped.
This means you want to leave them in and not remove them - otherwise a person later on would update from Trunk and just get the latest version - which doesn't have the preamble - and the work wouldn't be done.

Or am I wrong, and this only happens with Class initialization?

It happens exactly the same as with class initialization:

If the definition (of the script or method) changed, it gets executed.

You cannot rely on it having executed, or it only executing once. It’s better to write it in a way that running it again does no harm.

We can force execution by issuing an update map, but it’s better to avoid that.

For the problem at hand (empty method categories) we also could just add a step to the release builder to ensure all categories are clean.

We could run this for all classes I guess. I don't see much value in keeping empty method categories around...

Anyone objects ?

Best,
Karl
  

- Bert -









Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Tobias Pape

On 04.03.2016, at 15:59, karl ramberg <[hidden email]> wrote:

>
>
> On Fri, Mar 4, 2016 at 3:25 PM, Bert Freudenberg <[hidden email]> wrote:
> On 03.03.2016, at 23:28, Chris Cunningham <[hidden email]> wrote:
>>
>> On Thu, Mar 3, 2016 at 12:31 PM, karl ramberg <[hidden email]> wrote:
>> Nice.
>> BTW: there is a lot of empty categories in the Preferences class.
>> We must remove those in a post script or something.
>> Preferences organization removeEmptyCategories
>>
>> I'm not sure how to do it ?
>>
>> Add it in a package preamble ?
>> Does we then need to remove the preamble again ?
>>
>> If I remember right, the preamble (and postlude?) only get run once - when they are first changed.  After that, they are skipped.
>> This means you want to leave them in and not remove them - otherwise a person later on would update from Trunk and just get the latest version - which doesn't have the preamble - and the work wouldn't be done.
>>
>> Or am I wrong, and this only happens with Class initialization?
>
> It happens exactly the same as with class initialization:
>
> If the definition (of the script or method) changed, it gets executed.
>
> You cannot rely on it having executed, or it only executing once. It’s better to write it in a way that running it again does no harm.
>
> We can force execution by issuing an update map, but it’s better to avoid that.
>
> For the problem at hand (empty method categories) we also could just add a step to the release builder to ensure all categories are clean.
>
> We could run this for all classes I guess. I don't see much value in keeping empty method categories around...
>
> Anyone objects ?


"look at class side" …

Best
        -Tobias

>
> Best,
> Karl
>  
>
> - Bert -


Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Karl Ramberg
Ugh, of course there is stuff like "look at class side" ;-)



Best.
Karl



On Fri, Mar 4, 2016 at 4:20 PM, Tobias Pape <[hidden email]> wrote:

On <a href="tel:04.03.2016" value="+464032016">04.03.2016, at 15:59, karl ramberg <[hidden email]> wrote:

>
>
> On Fri, Mar 4, 2016 at 3:25 PM, Bert Freudenberg <[hidden email]> wrote:
> On 03.03.2016, at 23:28, Chris Cunningham <[hidden email]> wrote:
>>
>> On Thu, Mar 3, 2016 at 12:31 PM, karl ramberg <[hidden email]> wrote:
>> Nice.
>> BTW: there is a lot of empty categories in the Preferences class.
>> We must remove those in a post script or something.
>> Preferences organization removeEmptyCategories
>>
>> I'm not sure how to do it ?
>>
>> Add it in a package preamble ?
>> Does we then need to remove the preamble again ?
>>
>> If I remember right, the preamble (and postlude?) only get run once - when they are first changed.  After that, they are skipped.
>> This means you want to leave them in and not remove them - otherwise a person later on would update from Trunk and just get the latest version - which doesn't have the preamble - and the work wouldn't be done.
>>
>> Or am I wrong, and this only happens with Class initialization?
>
> It happens exactly the same as with class initialization:
>
> If the definition (of the script or method) changed, it gets executed.
>
> You cannot rely on it having executed, or it only executing once. It’s better to write it in a way that running it again does no harm.
>
> We can force execution by issuing an update map, but it’s better to avoid that.
>
> For the problem at hand (empty method categories) we also could just add a step to the release builder to ensure all categories are clean.
>
> We could run this for all classes I guess. I don't see much value in keeping empty method categories around...
>
> Anyone objects ?


"look at class side" …

Best
        -Tobias

>
> Best,
> Karl
>
>
> - Bert -





Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

marcel.taeumel
In reply to this post by Chris Muller-3
Hi Chris,

sure. This selectors is constructed via the preference name + "Changed" and stored in changeSelector. Then changeSelector is performed on changeInformee. You will not find anything in the code and hence Senders does not give you anything.

Best,
Marcel
Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Chris Muller-3
Thanks Marcel, but my question was about the necessity of such black
magic, and what possible mitigations could be taken to reduce or
eliminate it..

On Sat, Mar 5, 2016 at 6:55 PM, marcel.taeumel <[hidden email]> wrote:

> Hi Chris,
>
> sure. This selectors is constructed via the preference name + "Changed" and
> stored in changeSelector. Then changeSelector is performed on
> changeInformee. You will not find anything in the code and hence Senders
> does not give you anything.
>
> Best,
> Marcel
>
>
>
> --
> View this message in context: http://forum.world.st/swapMouseButtons-broken-in-trunk-tp4881884p4882728.html
> Sent from the Squeak - Dev mailing list archive at Nabble.com.
>

Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Bert Freudenberg
On 06.03.2016, at 17:51, Chris Muller <[hidden email]> wrote:
>
> Thanks Marcel, but my question was about the necessity of such black
> magic, and what possible mitigations could be taken to reduce or
> eliminate it..

We could add it to setNotificationParametersForStandardPreferences for documentation.

> On Sat, Mar 5, 2016 at 6:55 PM, marcel.taeumel <[hidden email]> wrote:
>> Hi Chris,
>>
>> sure. This selectors is constructed via the preference name + "Changed" and
>> stored in changeSelector. Then changeSelector is performed on
>> changeInformee.

Are you sure? I thought it would have been added by a changeset preamble. I don’t think it’s constructed.

- Bert -






smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

Bert Freudenberg
On 06.03.2016, at 18:33, Bert Freudenberg <[hidden email]> wrote:
>
> On 06.03.2016, at 17:51, Chris Muller <[hidden email]> wrote:
>>
>> Thanks Marcel, but my question was about the necessity of such black
>> magic, and what possible mitigations could be taken to reduce or
>> eliminate it..
>
> We could add it to setNotificationParametersForStandardPreferences for documentation.

Hmm, no, that’s only for Preferences as changeInformee … We could just add a comment to swapMouseButtonsChanged of course.

Pragma prefs certainly have an advantage for documentation.

- Bert -

>> On Sat, Mar 5, 2016 at 6:55 PM, marcel.taeumel <[hidden email]> wrote:
>>> Hi Chris,
>>>
>>> sure. This selectors is constructed via the preference name + "Changed" and
>>> stored in changeSelector. Then changeSelector is performed on
>>> changeInformee.
>
> Are you sure? I thought it would have been added by a changeset preamble. I don’t think it’s constructed.
>
> - Bert -





smime.p7s (5K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

marcel.taeumel
In reply to this post by Chris Muller-3
Well, if that selector is missing, a debugger will be shown. Then you can fix it. Where is the black magic or the potential pitfall for the future? Hmm... we might want to provide symbol search through objects. This particular symbol is hold in a preference instance in the instVar changeSelector.

How can we detect that? Shouldn't be that hard...

Best,
Marcel
Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

marcel.taeumel
It's actuallly really simple:

term := #swapMouseButtonsChanged.
senders := OrderedCollection new.

SystemNavigation default allObjectsDo: [:ea |
        1 to: ea class instSize do: [:i | |val|
                val := ea instVarAt: i.
                val isSymbol ifTrue: [
                        val = term ifTrue: [senders add: ea]]]].

senders explore.

On my laptop, it benches to '11.6 per second. 85.9 milliseconds per run.'

Should we add this to trunk? We could filter out method additions or method references to produce cleaner results. The "Senders" shortcut might just spawn an additional explorer with the resulting objects. Fairly easy.

Best,
Marcel
Reply | Threaded
Open this post in threaded view
|

Re: swapMouseButtons broken in trunk

David T. Lewis
On Mon, Mar 07, 2016 at 03:13:10PM -0800, marcel.taeumel wrote:

> It's actuallly really simple:
>
> term := #swapMouseButtonsChanged.
> senders := OrderedCollection new.
>
> SystemNavigation default allObjectsDo: [:ea |
> 1 to: ea class instSize do: [:i | |val|
> val := ea instVarAt: i.
> val isSymbol ifTrue: [
> val = term ifTrue: [senders add: ea]]]].
>
> senders explore.
>
> On my laptop, it benches to '11.6 per second. 85.9 milliseconds per run.'
>
> Should we add this to trunk? We could filter out method additions or method
> references to produce cleaner results. The "Senders" shortcut might just
> spawn an additional explorer with the resulting objects. Fairly easy.
>

It seems to make sense for "senders select: [ :e | e species == Preference ]"
and there is no performance problem. So I guess is OK as long as there is a
good method comment to explain why we do this for the special case of senders
that originate from instances of Preference.

Dave


12