Awesome
BugReport
I provide some utilities to dump bug reports in Pharo applications.
Installation
To install the project in your Pharo image execute:
Metacello new
githubUser: 'jecisc' project: 'BugReport' commitish: 'v1.x.x' path: 'src';
baseline: 'BugReport';
load
To add it to your baseline:
spec
baseline: 'BugReport'
with: [ spec repository: 'github://jecisc/BugReport:v1.x.x/src' ]
Note that you can replace the #v1.x.x by another branch such as #development or a tag such as #v1.0.0, #v1.? or #v1.1.?.
Documentation
It is possible to export a bug report in a string.
[ (Set withAll: #(1 2 3 4)) first ]
on: Error
do: [ :ex |
String streamContents: [ :s |
BugReporter new
context: thisContext;
description: ex description;
stream: s;
write
] ]
It is also possible to export a bug report in a dump file.
[ (Set withAll: #(1 2 3 4)) first ]
on: Error
do: [ :ex |
FileBugReporter new
context: thisContext;
description: ex description;
file: 'report.txt' asFileReference;
write
]
Or in an easier way.
[ (Set withAll: #(1 2 3 4)) first ] on: Error do: [ :ex | ex dumpStackFor: thisContext ].
"or"
[ (Set withAll: #(1 2 3 4)) first ] on: Error do: [ :ex | ex dumpStack ].
<details>
<summary>Example of result</summary>
MessageNotUnderstood: Set>> #first
----------------------------------------------------------------------------------------------------
Set(Object)>>doesNotUnderstand: #first
receiver
a Set(1 2 3 4)
temps
aMessage first
RFReifyValueVar nil
RFArgumentsReificationVar an Array(first)
exception MessageNotUnderstood: Set>> #first
resumeValue nil
inst vars
tally 4
array #(nil 1 2 3 4 nil nil)
----------------------------------------------------------------------------------------------------
[ (Set withAll: #(1 2 3 4)) first ] in BugReporter class>>DoIt
receiver
BugReporter
temps
inst vars
superclass Object
methodDict a MethodDictionary(#context:->BugReporter>>#context: #description->BugReporter>>#description #description:->BugReporter>>#description: #movePastMessageNotUnderstood->BugReporter>>#movePastMessageNotUn...etc...
format 65539
layout a FixedLayout
organization a ClassOrganization
subclasses {FileBugReporter}
name #BugReporter
classPool a Dictionary()
sharedPools an OrderedCollection()
environment a SystemDictionary(lots of globals)
category #BugReport
----------------------------------------------------------------------------------------------------
BlockClosure>>on:do:
receiver
[ (Set withAll: #(1 2 3 4)) first ]
temps
exception Error
handlerAction [ :ex |
String
streamContents: [ :s |
BugReporter new
context: thisContext;
description: ex description;
stream: s;
write ] ]
inst vars
outerContext BugReporter class>>DoIt
startpc 141
numArgs 0
----------------------------------------------------------------------------------------------------
BugReporter class>>DoIt
receiver
BugReporter
temps
inst vars
superclass Object
methodDict a MethodDictionary(#context:->BugReporter>>#context: #description->BugReporter>>#description #description:->BugReporter>>#description: #movePastMessageNotUnderstood->BugReporter>>#movePastMessageNotUn...etc...
format 65539
layout a FixedLayout
organization a ClassOrganization
subclasses {FileBugReporter}
name #BugReporter
classPool a Dictionary()
sharedPools an OrderedCollection()
environment a SystemDictionary(lots of globals)
category #BugReport
----------------------------------------------------------------------------------------------------
OpalCompiler>>evaluate
receiver
an OpalCompiler
temps
value nil
inst vars
ast DoIt
^ [ (Set withAll: #(1 2 3 4)) first ]
on: Error
do: [ :ex |
String
streamContents: [ :s |
BugReporter new
context: thisContext;
description: ex description;
s...etc...
source a ReadStream
context nil
receiver BugReporter
compilationContext a CompilationContext
compilationContextClass nil
----------------------------------------------------------------------------------------------------
ClyTextEditor(RubSmalltalkEditor)>>evaluate:andDo:
receiver
a ClyTextEditor
temps
aStream a ReadWriteStream
aBlock [ :result | result inspect ]
result nil
rcvr BugReporter
ctxt nil
inst vars
defaultKeymappingIndex nil
textArea a RubEditingArea(620650752)
findReplaceService nil
selectorChooser nil
notificationStrategy a RubTextInsertionStrategy
completionEngine a CompletionEngine
----------------------------------------------------------------------------------------------------
ClyTextEditor(RubSmalltalkEditor)>>evaluateSelectionAndDo:
receiver
a ClyTextEditor
temps
aBlock [ :result | result inspect ]
inst vars
defaultKeymappingIndex nil
textArea a RubEditingArea(620650752)
findReplaceService nil
selectorChooser nil
notificationStrategy a RubTextInsertionStrategy
completionEngine a CompletionEngine
----------------------------------------------------------------------------------------------------
ClyTextEditor(RubSmalltalkEditor)>>inspectIt
receiver
a ClyTextEditor
temps
inst vars
defaultKeymappingIndex nil
textArea a RubEditingArea(620650752)
findReplaceService nil
selectorChooser nil
notificationStrategy a RubTextInsertionStrategy
completionEngine a CompletionEngine
----------------------------------------------------------------------------------------------------
ClyTextEditor(RubSmalltalkEditor)>>inspectIt:
receiver
a ClyTextEditor
temps
aKeyboardEvent nil
inst vars
defaultKeymappingIndex nil
textArea a RubEditingArea(620650752)
findReplaceService nil
selectorChooser nil
notificationStrategy a RubTextInsertionStrategy
completionEngine a CompletionEngine
----------------------------------------------------------------------------------------------------
[ :target | target editor inspectIt: nil ] in RubSmalltalkEditor class>>buildShortcutsOn:
receiver
RubSmalltalkEditor
temps
aBuilder a RubEditingArea(620650752)
t1 a RubEditingArea(620650752)
inst vars
superclass RubTextEditor
methodDict a MethodDictionary(size 103)
format 65542
layout a FixedLayout
organization a ClassOrganization
subclasses {ClyTextEditor}
name #RubSmalltalkEditor
classPool a Dictionary(#CompletionEngineClass->CompletionEngine )
sharedPools an OrderedCollection()
environment a SystemDictionary(lots of globals)
category #'Rubric-Editing-Code'
----------------------------------------------------------------------------------------------------
BlockClosure>>cull:
receiver
[ :target | target editor inspectIt: nil ]
temps
anArg a RubEditingArea(620650752)
inst vars
outerContext RubSmalltalkEditor class>>buildShortcutsOn:
startpc 567
numArgs 1
----------------------------------------------------------------------------------------------------
BlockClosure>>cull:cull:
receiver
[ :target | target editor inspectIt: nil ]
temps
firstArg a RubEditingArea(620650752)
secondArg a RubEditingArea(620650752)
inst vars
outerContext RubSmalltalkEditor class>>buildShortcutsOn:
startpc 567
numArgs 1
----------------------------------------------------------------------------------------------------
BlockClosure>>cull:cull:cull:
receiver
[ :target | target editor inspectIt: nil ]
temps
firstArg a RubEditingArea(620650752)
secondArg a RubEditingArea(620650752)
thirdArg [keystroke '<Cmd-i>']
inst vars
outerContext RubSmalltalkEditor class>>buildShortcutsOn:
startpc 567
numArgs 1
----------------------------------------------------------------------------------------------------
KMCategoryBinding>>completeMatch:buffer:
receiver
aKMCategoryTarget(#RubSmalltalkEditor)
temps
aKeymap #inspectIt on Meta + i do [ :target | target editor inspectIt: nil ]
aBuffer an OrderedCollection([keystroke '<Cmd-i>'])
inst vars
target a RubEditingArea(620650752)
category a KMCategory
morph a RubEditingArea(620650752)
----------------------------------------------------------------------------------------------------
[ :l | l completeMatch: self buffer: aBuffer ] in KMKeymap>>notifyCompleteMatchTo:buffer:
receiver
#inspectIt on Meta + i do [ :target | target editor inspectIt: nil ]
temps
aListener aKMCategoryTarget(#RubSmalltalkEditor)
aBuffer an OrderedCollection([keystroke '<Cmd-i>'])
t1 aKMCategoryTarget(#RubSmalltalkEditor)
t2 an OrderedCollection([keystroke '<Cmd-i>'])
inst vars
action [ :target | target editor inspectIt: nil ]
name #inspectIt
shortcut Meta + i
defaultShortcut Meta + i
description 'Inspect it'
----------------------------------------------------------------------------------------------------
Array(SequenceableCollection)>>do:
receiver
an Array(aKMCategoryTarget(#RubSmalltalkEditor) a CmdKMDispatcher)
temps
aBlock [ :l | l completeMatch: self buffer: aBuffer ]
index 2
----------------------------------------------------------------------------------------------------
KMKeymap>>notifyCompleteMatchTo:buffer:
receiver
#inspectIt on Meta + i do [ :target | target editor inspectIt: nil ]
temps
aListener an Array(aKMCategoryTarget(#RubSmalltalkEditor) a CmdKMDispatcher)
aBuffer an OrderedCollection([keystroke '<Cmd-i>'])
listeners an Array(aKMCategoryTarget(#RubSmalltalkEditor) a CmdKMDispatcher)
inst vars
action [ :target | target editor inspectIt: nil ]
name #inspectIt
shortcut Meta + i
defaultShortcut Meta + i
description 'Inspect it'
----------------------------------------------------------------------------------------------------
KMKeymap>>onMatchWith:notify:andDo:
receiver
#inspectIt on Meta + i do [ :target | target editor inspectIt: nil ]
temps
anEventBuffer an OrderedCollection([keystroke '<Cmd-i>'])
aMatchListener an Array(aKMCategoryTarget(#RubSmalltalkEditor) a CmdKMDispatcher)
anAction [ ^ self ]
inst vars
action [ :target | target editor inspectIt: nil ]
name #inspectIt
shortcut Meta + i
defaultShortcut Meta + i
description 'Inspect it'
----------------------------------------------------------------------------------------------------
[ :entry | entry onMatchWith: anEventBuffer notify: aMatchListener andDo: aBlock ] in KMCategory>>onMatchWith:notify:andDo:
receiver
a KMCategory
temps
anEventBuffer #inspectIt on Meta + i do [ :target | target editor inspectIt: nil ]
aMatchListener [ ^ self ]
aBlock an Array(aKMCategoryTarget(#RubSmalltalkEditor) a CmdKMDispatcher)
entry an OrderedCollection([keystroke '<Cmd-i>'])
inst vars
name #RubSmalltalkEditor
platforms a Dictionary(#MacOSX->a KMStorage #Windows->a KMStorage #all->a KMStorage )
----------------------------------------------------------------------------------------------------
Set>>do:
receiver
a Set(#widenSelectionOfIt on Meta + 2 do [ :target | target editor widenSelectionOfIt ]
#implementorsOfIt on Meta + m do [ :target | target editor implementorsOfIt: nil ]
#jumpToNextKeywordOfIt on S...etc...
temps
aBlock [ :entry | entry onMatchWith: anEventBuffer notify: aMatchListener andDo: aBlock ]
index 23
each #inspectIt on Meta + i do [ :target | target editor inspectIt: nil ]
inst vars
tally 14
array an Array(nil #widenSelectionOfIt on Meta + 2 do [ :target | target editor widenSelectionOfIt ]
#implementorsOfIt on Meta + m do [ :target | target editor implementorsOfIt: nil ]
nil #jumpToNextKeywo...etc...
----------------------------------------------------------------------------------------------------
KMCategory>>onMatchWith:notify:andDo:
receiver
a KMCategory
temps
anEventBuffer an OrderedCollection([keystroke '<Cmd-i>'])
aMatchListener an Array(aKMCategoryTarget(#RubSmalltalkEditor) a CmdKMDispatcher)
aBlock [ ^ self ]
inst vars
name #RubSmalltalkEditor
platforms a Dictionary(#MacOSX->a KMStorage #Windows->a KMStorage #all->a KMStorage )
----------------------------------------------------------------------------------------------------
KMCategoryBinding>>verifyMatchWith:notifying:thenDoing:
receiver
aKMCategoryTarget(#RubSmalltalkEditor)
temps
anEventBuffer an OrderedCollection([keystroke '<Cmd-i>'])
aListener a CmdKMDispatcher
anAction [ ^ self ]
inst vars
target a RubEditingArea(620650752)
category a KMCategory
morph a RubEditingArea(620650752)
----------------------------------------------------------------------------------------------------
[ :aTarget | "nice hack to stop in the first listener" aTarget verifyMatchWith: anEventBuffer notifying: self thenDoing: [ ^ self ] ] in CmdKMDispatcher(KMDispatcher)>>dispatch:
receiver
a CmdKMDispatcher
temps
anEventBuffer aKMCategoryTarget(#RubSmalltalkEditor)
aTarget an OrderedCollection([keystroke '<Cmd-i>'])
inst vars
target a KMTarget
currentEvent nil
targets a Set(aKMCategoryTarget(#MorphFocusCtrlNavigation) aKMCategoryTarget(#RubTextEditor) aKMCategoryTarget(#RubSmalltalkEditor))
morph a RubEditingArea(620650752)
directKeymaps a KMCategory
commandProvider a ClyClassCommentEditorToolMorph(1007235072)
----------------------------------------------------------------------------------------------------
OrderedCollection>>do:
receiver
an OrderedCollection(aKMCategoryTarget(nil) aKMCategoryTarget(#MorphFocusCtrlNavigation) aKMCategoryTarget(#RubTextEditor) aKMCategoryTarget(#RubSmalltalkEditor))
temps
aBlock [ :aTarget | "nice hack to stop in the first listener" aTarget verifyMatchWith: anEventBuffer notifying: self thenDoing: [ ^ self ] ]
index 4
inst vars
array an Array(aKMCategoryTarget(nil) aKMCategoryTarget(#MorphFocusCtrlNavigation) aKMCategoryTarget(#RubTextEditor) aKMCategoryTarget(#RubSmalltalkEditor) nil nil nil nil nil nil)
firstIndex 1
lastIndex 4
----------------------------------------------------------------------------------------------------
CmdKMDispatcher(KMDispatcher)>>dispatch:
receiver
a CmdKMDispatcher
temps
anEventBuffer an OrderedCollection([keystroke '<Cmd-i>'])
inst vars
target a KMTarget
currentEvent nil
targets a Set(aKMCategoryTarget(#MorphFocusCtrlNavigation) aKMCategoryTarget(#RubTextEditor) aKMCategoryTarget(#RubSmalltalkEditor))
morph a RubEditingArea(620650752)
directKeymaps a KMCategory
commandProvider a ClyClassCommentEditorToolMorph(1007235072)
----------------------------------------------------------------------------------------------------
CmdKMDispatcher>>dispatch:
receiver
a CmdKMDispatcher
temps
executed an OrderedCollection([keystroke '<Cmd-i>'])
anEventBuffer a ClyTextEditorContext
context #(false)
inst vars
target a KMTarget
currentEvent nil
targets a Set(aKMCategoryTarget(#MorphFocusCtrlNavigation) aKMCategoryTarget(#RubTextEditor) aKMCategoryTarget(#RubSmalltalkEditor))
morph a RubEditingArea(620650752)
directKeymaps a KMCategory
commandProvider a ClyClassCommentEditorToolMorph(1007235072)
----------------------------------------------------------------------------------------------------
KMTarget>>dispatch:
receiver
a KMTarget
temps
buffer an OrderedCollection([keystroke '<Cmd-i>'])
inst vars
morph a RubEditingArea(620650752)
targetSelector #yourself
----------------------------------------------------------------------------------------------------
[ :targetToDispatch |
targetToDispatch dispatch: KMBuffer uniqueInstance buffer copy.
aKeyboardEvent wasHandled ifTrue: [ ^ self ] ] in KMDispatchChain>>dispatch:
receiver
a KMDispatchChain
temps
aKeyboardEvent a KMTarget
targetToDispatch [keystroke '<Cmd-i>']
inst vars
target a KMTarget
dispatcher a CmdKMDispatcher
initialTarget a KMGlobalDispatcher
----------------------------------------------------------------------------------------------------
KMDispatchChain>>do:
receiver
a KMDispatchChain
temps
aBlock [ :targetToDispatch |
targetToDispatch dispatch: KMBuffer uniqueInstance buffer copy.
aKeyboardEvent wasHandled ifTrue: [ ^ self ] ]
currentTarget a KMTarget
inst vars
target a KMTarget
dispatcher a CmdKMDispatcher
initialTarget a KMGlobalDispatcher
----------------------------------------------------------------------------------------------------
KMDispatchChain>>dispatch:
receiver
a KMDispatchChain
temps
aKeyboardEvent [keystroke '<Cmd-i>']
inst vars
target a KMTarget
dispatcher a CmdKMDispatcher
initialTarget a KMGlobalDispatcher
----------------------------------------------------------------------------------------------------
CmdKMDispatcher(KMDispatcher)>>dispatchKeystroke:
receiver
a CmdKMDispatcher
temps
aKeyEvent [keystroke '<Cmd-i>']
chain a KMDispatchChain
inst vars
target a KMTarget
currentEvent nil
targets a Set(aKMCategoryTarget(#MorphFocusCtrlNavigation) aKMCategoryTarget(#RubTextEditor) aKMCategoryTarget(#RubSmalltalkEditor))
morph a RubEditingArea(620650752)
directKeymaps a KMCategory
commandProvider a ClyClassCommentEditorToolMorph(1007235072)
----------------------------------------------------------------------------------------------------
RubEditingArea(Morph)>>dispatchKeystrokeForEvent:
receiver
a RubEditingArea(620650752)
temps
evt [keystroke '<Cmd-i>']
inst vars
bounds (0@0) corner: (1875@601)
owner a TransformWithLayoutMorph(952606208)
submorphs an Array(a RubCursor(162526720) a RubPrimarySelectionMorph(1064620288))
fullBounds (0@0) corner: (1875@601)
color Color transparent
extension a MorphExtension (242383104) [other: (announcer -> an Announcer) (kmDispatcher -> a CmdKMDispatcher)]
model a RubScrolledTextModel
paragraph a RubShoutStylerDecorator
editor a ClyTextEditor
scrollPane a RubTextScrollPane(964899840)
editingState a RubEditingState
textStyle a TextStyle Source Code Pro
textColor Color white
margins a Margin top: 6 left: 6 bottom: 6 right: 6
readOnly false
menuAllowed nil
editingMode a ClyTextEditingMode
cursor a RubCursor(162526720)
segments an OrderedCollection()
getMenuPolicy nil
mouseDownPoint nil
completionEngine a CompletionEngine
maxLength nil
findReplaceService a SpRubFindReplaceService
wrapped true
editorClass ClyTextEditor
----------------------------------------------------------------------------------------------------
RubEditingArea(RubAbstractTextArea)>>handleKeystroke:
receiver
a RubEditingArea(620650752)
temps
anEvent [keystroke '<Cmd-i>']
inst vars
bounds (0@0) corner: (1875@601)
owner a TransformWithLayoutMorph(952606208)
submorphs an Array(a RubCursor(162526720) a RubPrimarySelectionMorph(1064620288))
fullBounds (0@0) corner: (1875@601)
color Color transparent
extension a MorphExtension (242383104) [other: (announcer -> an Announcer) (kmDispatcher -> a CmdKMDispatcher)]
model a RubScrolledTextModel
paragraph a RubShoutStylerDecorator
editor a ClyTextEditor
scrollPane a RubTextScrollPane(964899840)
editingState a RubEditingState
textStyle a TextStyle Source Code Pro
textColor Color white
margins a Margin top: 6 left: 6 bottom: 6 right: 6
readOnly false
menuAllowed nil
editingMode a ClyTextEditingMode
cursor a RubCursor(162526720)
segments an OrderedCollection()
getMenuPolicy nil
mouseDownPoint nil
completionEngine a CompletionEngine
maxLength nil
findReplaceService a SpRubFindReplaceService
wrapped true
editorClass ClyTextEditor
----------------------------------------------------------------------------------------------------
KeyboardEvent>>sentTo:
receiver
[keystroke '<Cmd-i>']
temps
anObject a RubEditingArea(620650752)
inst vars
timeStamp 277123888
source a HandMorph(677264640)
windowIndex nil
type #keystroke
buttons 64
position (-23@234)
handler nil
wasHandled true
keyValue 105
charCode 105
scanCode 2
----------------------------------------------------------------------------------------------------
RubEditingArea(Morph)>>handleEvent:
receiver
a RubEditingArea(620650752)
temps
anEvent [keystroke '<Cmd-i>']
inst vars
bounds (0@0) corner: (1875@601)
owner a TransformWithLayoutMorph(952606208)
submorphs an Array(a RubCursor(162526720) a RubPrimarySelectionMorph(1064620288))
fullBounds (0@0) corner: (1875@601)
color Color transparent
extension a MorphExtension (242383104) [other: (announcer -> an Announcer) (kmDispatcher -> a CmdKMDispatcher)]
model a RubScrolledTextModel
paragraph a RubShoutStylerDecorator
editor a ClyTextEditor
scrollPane a RubTextScrollPane(964899840)
editingState a RubEditingState
textStyle a TextStyle Source Code Pro
textColor Color white
margins a Margin top: 6 left: 6 bottom: 6 right: 6
readOnly false
menuAllowed nil
editingMode a ClyTextEditingMode
cursor a RubCursor(162526720)
segments an OrderedCollection()
getMenuPolicy nil
mouseDownPoint nil
completionEngine a CompletionEngine
maxLength nil
findReplaceService a SpRubFindReplaceService
wrapped true
editorClass ClyTextEditor
----------------------------------------------------------------------------------------------------
RubEditingArea(Morph)>>handleFocusEvent:
receiver
a RubEditingArea(620650752)
temps
anEvent [keystroke '<Cmd-i>']
inst vars
bounds (0@0) corner: (1875@601)
owner a TransformWithLayoutMorph(952606208)
submorphs an Array(a RubCursor(162526720) a RubPrimarySelectionMorph(1064620288))
fullBounds (0@0) corner: (1875@601)
color Color transparent
extension a MorphExtension (242383104) [other: (announcer -> an Announcer) (kmDispatcher -> a CmdKMDispatcher)]
model a RubScrolledTextModel
paragraph a RubShoutStylerDecorator
editor a ClyTextEditor
scrollPane a RubTextScrollPane(964899840)
editingState a RubEditingState
textStyle a TextStyle Source Code Pro
textColor Color white
margins a Margin top: 6 left: 6 bottom: 6 right: 6
readOnly false
menuAllowed nil
editingMode a ClyTextEditingMode
cursor a RubCursor(162526720)
segments an OrderedCollection()
getMenuPolicy nil
mouseDownPoint nil
completionEngine a CompletionEngine
maxLength nil
findReplaceService a SpRubFindReplaceService
wrapped true
editorClass ClyTextEditor
----------------------------------------------------------------------------------------------------
[ ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self)) ] in HandMorph>>sendFocusEvent:to:clear:
receiver
a HandMorph(677264640)
temps
anEvent a RubEditingArea(620650752)
focusHolder [keystroke '<Cmd-i>']
aBlock #(nil)
t1 a RubEditingArea(620650752)
t2 [keystroke '<Cmd-i>']
t3 #(nil)
inst vars
bounds (-5@721) corner: (11@737)
owner a WorldMorph(691814656) [world]
submorphs #()
fullBounds (-5@721) corner: (11@737)
color Color blue
extension a MorphExtension (440854784)
mouseFocus nil
keyboardFocus a RubEditingArea(620650752)
eventListeners a WeakArray(a GLMFallbackScrollListBrick(739556864))
mouseListeners nil
mouseClickState nil
mouseOverHandler a MouseOverHandler
lastMouseEvent [(3@729) mouseOver CMD 277123888 nil]
targetOffset (149@411)
damageRecorder a DamageRecorder
cacheCanvas nil
cachedCanvasHasHoles true
temporaryCursor Form(16x16x8)
temporaryCursorOffset (-8@ -8)
hardwareCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
hasChanged true
savedPatch nil
lastEventBuffer #(1 277123888 3 729 0 8 0 1)
lastKeyScanCode 2
combinedChar nil
captureBlock nil
recentModifiers 8
----------------------------------------------------------------------------------------------------
BlockClosure>>on:do:
receiver
[ ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self)) ]
temps
exception Error
handlerAction [ :ex |
ActiveWorld := priorWorld.
ActiveEvent := priorEvent.
ActiveHand := priorHand.
ex pass ]
inst vars
outerContext HandMorph>>sendFocusEvent:to:clear:
startpc 111
numArgs 0
----------------------------------------------------------------------------------------------------
WorldMorph>>becomeActiveDuring:
receiver
a WorldMorph(691814656) [world]
temps
aBlock [ ActiveHand := self.
ActiveEvent := anEvent.
result := focusHolder handleFocusEvent: (anEvent transformedBy: (focusHolder transformedFrom: self)) ]
priorWorld a WorldMorph(691814656) [world]
priorHand a HandMorph(677264640)
priorEvent nil
inst vars
bounds (0@0) corner: (1920@1033)
owner nil
submorphs an Array(a MenubarMorph(1031397632) a TaskbarMorph(351923968) a SystemWindow(199374848) named: BugReporter a SpecWindow(486588928) named: Working copy of BugReport a SystemWindow(996783872) named: Bas...etc...
fullBounds (0@0) corner: (1920@1033)
color (Color r: 0.05865102639296188 g: 0.07331378299120235 b: 0.10557184750733138 alpha: 1.0)
extension a MorphExtension (704038144) [other: (dragEnabled -> true) (dropEnabled -> true) (kmDispatcher -> a KMDispatcher)]
borderWidth 0
borderColor (Color r: 0.8611925708699902 g: 1.0 b: 0.7223851417399805 alpha: 1.0)
backgroundMorph an AlphaImageMorph(939675904)
worldState a WorldState
griddingOn nil
----------------------------------------------------------------------------------------------------
HandMorph>>sendFocusEvent:to:clear:
receiver
a HandMorph(677264640)
temps
result [keystroke '<Cmd-i>']
anEvent a RubEditingArea(620650752)
focusHolder [ self keyboardFocus: nil ]
aBlock a WorldMorph(691814656) [world]
w #(nil)
inst vars
bounds (-5@721) corner: (11@737)
owner a WorldMorph(691814656) [world]
submorphs #()
fullBounds (-5@721) corner: (11@737)
color Color blue
extension a MorphExtension (440854784)
mouseFocus nil
keyboardFocus a RubEditingArea(620650752)
eventListeners a WeakArray(a GLMFallbackScrollListBrick(739556864))
mouseListeners nil
mouseClickState nil
mouseOverHandler a MouseOverHandler
lastMouseEvent [(3@729) mouseOver CMD 277123888 nil]
targetOffset (149@411)
damageRecorder a DamageRecorder
cacheCanvas nil
cachedCanvasHasHoles true
temporaryCursor Form(16x16x8)
temporaryCursorOffset (-8@ -8)
hardwareCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
hasChanged true
savedPatch nil
lastEventBuffer #(1 277123888 3 729 0 8 0 1)
lastKeyScanCode 2
combinedChar nil
captureBlock nil
recentModifiers 8
----------------------------------------------------------------------------------------------------
HandMorph>>sendEvent:focus:clear:
receiver
a HandMorph(677264640)
temps
anEvent [keystroke '<Cmd-i>']
focusHolder a RubEditingArea(620650752)
aBlock [ self keyboardFocus: nil ]
result nil
inst vars
bounds (-5@721) corner: (11@737)
owner a WorldMorph(691814656) [world]
submorphs #()
fullBounds (-5@721) corner: (11@737)
color Color blue
extension a MorphExtension (440854784)
mouseFocus nil
keyboardFocus a RubEditingArea(620650752)
eventListeners a WeakArray(a GLMFallbackScrollListBrick(739556864))
mouseListeners nil
mouseClickState nil
mouseOverHandler a MouseOverHandler
lastMouseEvent [(3@729) mouseOver CMD 277123888 nil]
targetOffset (149@411)
damageRecorder a DamageRecorder
cacheCanvas nil
cachedCanvasHasHoles true
temporaryCursor Form(16x16x8)
temporaryCursorOffset (-8@ -8)
hardwareCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
hasChanged true
savedPatch nil
lastEventBuffer #(1 277123888 3 729 0 8 0 1)
lastKeyScanCode 2
combinedChar nil
captureBlock nil
recentModifiers 8
----------------------------------------------------------------------------------------------------
HandMorph>>sendKeyboardEvent:
receiver
a HandMorph(677264640)
temps
anEvent [keystroke '<Cmd-i>']
inst vars
bounds (-5@721) corner: (11@737)
owner a WorldMorph(691814656) [world]
submorphs #()
fullBounds (-5@721) corner: (11@737)
color Color blue
extension a MorphExtension (440854784)
mouseFocus nil
keyboardFocus a RubEditingArea(620650752)
eventListeners a WeakArray(a GLMFallbackScrollListBrick(739556864))
mouseListeners nil
mouseClickState nil
mouseOverHandler a MouseOverHandler
lastMouseEvent [(3@729) mouseOver CMD 277123888 nil]
targetOffset (149@411)
damageRecorder a DamageRecorder
cacheCanvas nil
cachedCanvasHasHoles true
temporaryCursor Form(16x16x8)
temporaryCursorOffset (-8@ -8)
hardwareCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
hasChanged true
savedPatch nil
lastEventBuffer #(1 277123888 3 729 0 8 0 1)
lastKeyScanCode 2
combinedChar nil
captureBlock nil
recentModifiers 8
----------------------------------------------------------------------------------------------------
HandMorph>>handleEvent:
receiver
a HandMorph(677264640)
temps
anEvent [keystroke '<Cmd-i>']
evt [keystroke '<Cmd-i>']
inst vars
bounds (-5@721) corner: (11@737)
owner a WorldMorph(691814656) [world]
submorphs #()
fullBounds (-5@721) corner: (11@737)
color Color blue
extension a MorphExtension (440854784)
mouseFocus nil
keyboardFocus a RubEditingArea(620650752)
eventListeners a WeakArray(a GLMFallbackScrollListBrick(739556864))
mouseListeners nil
mouseClickState nil
mouseOverHandler a MouseOverHandler
lastMouseEvent [(3@729) mouseOver CMD 277123888 nil]
targetOffset (149@411)
damageRecorder a DamageRecorder
cacheCanvas nil
cachedCanvasHasHoles true
temporaryCursor Form(16x16x8)
temporaryCursorOffset (-8@ -8)
hardwareCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
hasChanged true
savedPatch nil
lastEventBuffer #(1 277123888 3 729 0 8 0 1)
lastKeyScanCode 2
combinedChar nil
captureBlock nil
recentModifiers 8
----------------------------------------------------------------------------------------------------
HandMorph>>processEventsFromQueue:
receiver
a HandMorph(677264640)
temps
anEventQueue an InputEventSensor
evt [keystroke '<Cmd-i>']
evtBuf #(2 277123888 105 0 8 105 0 1)
type 2
hadAny true
inst vars
bounds (-5@721) corner: (11@737)
owner a WorldMorph(691814656) [world]
submorphs #()
fullBounds (-5@721) corner: (11@737)
color Color blue
extension a MorphExtension (440854784)
mouseFocus nil
keyboardFocus a RubEditingArea(620650752)
eventListeners a WeakArray(a GLMFallbackScrollListBrick(739556864))
mouseListeners nil
mouseClickState nil
mouseOverHandler a MouseOverHandler
lastMouseEvent [(3@729) mouseOver CMD 277123888 nil]
targetOffset (149@411)
damageRecorder a DamageRecorder
cacheCanvas nil
cachedCanvasHasHoles true
temporaryCursor Form(16x16x8)
temporaryCursorOffset (-8@ -8)
hardwareCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
hasChanged true
savedPatch nil
lastEventBuffer #(1 277123888 3 729 0 8 0 1)
lastKeyScanCode 2
combinedChar nil
captureBlock nil
recentModifiers 8
----------------------------------------------------------------------------------------------------
HandMorph>>processEvents
receiver
a HandMorph(677264640)
temps
inst vars
bounds (-5@721) corner: (11@737)
owner a WorldMorph(691814656) [world]
submorphs #()
fullBounds (-5@721) corner: (11@737)
color Color blue
extension a MorphExtension (440854784)
mouseFocus nil
keyboardFocus a RubEditingArea(620650752)
eventListeners a WeakArray(a GLMFallbackScrollListBrick(739556864))
mouseListeners nil
mouseClickState nil
mouseOverHandler a MouseOverHandler
lastMouseEvent [(3@729) mouseOver CMD 277123888 nil]
targetOffset (149@411)
damageRecorder a DamageRecorder
cacheCanvas nil
cachedCanvasHasHoles true
temporaryCursor Form(16x16x8)
temporaryCursorOffset (-8@ -8)
hardwareCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
hasChanged true
savedPatch nil
lastEventBuffer #(1 277123888 3 729 0 8 0 1)
lastKeyScanCode 2
combinedChar nil
captureBlock nil
recentModifiers 8
----------------------------------------------------------------------------------------------------
[ :h |
self activeHand: h.
h processEvents.
self activeHand: nil ] in WorldState>>doOneCycleNowFor:
receiver
a WorldState
temps
aWorld a HandMorph(677264640)
t1 a HandMorph(677264640)
inst vars
hands an Array(a HandMorph(677264640))
damageRecorder a DamageRecorder
stepList a Heap()
lastStepTime 277121260
lastStepMessage nil
lastCycleTime 277123912
alarms a Heap(MorphicAlarm(#hideShow -> a RubCursor(162526720)))
lastAlarmTime 277123891
menuBuilder a PragmaMenuBuilder ( nil )
activeHand a HandMorph(677264640)
currentCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
worldRenderer a VMWorldRenderer
realWindowExtent (1920@1033)
----------------------------------------------------------------------------------------------------
Array(SequenceableCollection)>>do:
receiver
an Array(a HandMorph(677264640))
temps
aBlock [ :h |
self activeHand: h.
h processEvents.
self activeHand: nil ]
index 1
----------------------------------------------------------------------------------------------------
WorldState>>handsDo:
receiver
a WorldState
temps
aBlock [ :h |
self activeHand: h.
h processEvents.
self activeHand: nil ]
inst vars
hands an Array(a HandMorph(677264640))
damageRecorder a DamageRecorder
stepList a Heap()
lastStepTime 277121260
lastStepMessage nil
lastCycleTime 277123912
alarms a Heap(MorphicAlarm(#hideShow -> a RubCursor(162526720)))
lastAlarmTime 277123891
menuBuilder a PragmaMenuBuilder ( nil )
activeHand a HandMorph(677264640)
currentCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
worldRenderer a VMWorldRenderer
realWindowExtent (1920@1033)
----------------------------------------------------------------------------------------------------
WorldState>>doOneCycleNowFor:
receiver
a WorldState
temps
aWorld a WorldMorph(691814656) [world]
inst vars
hands an Array(a HandMorph(677264640))
damageRecorder a DamageRecorder
stepList a Heap()
lastStepTime 277121260
lastStepMessage nil
lastCycleTime 277123912
alarms a Heap(MorphicAlarm(#hideShow -> a RubCursor(162526720)))
lastAlarmTime 277123891
menuBuilder a PragmaMenuBuilder ( nil )
activeHand a HandMorph(677264640)
currentCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
worldRenderer a VMWorldRenderer
realWindowExtent (1920@1033)
----------------------------------------------------------------------------------------------------
WorldState>>doOneCycleFor:
receiver
a WorldState
temps
aWorld a WorldMorph(691814656) [world]
inst vars
hands an Array(a HandMorph(677264640))
damageRecorder a DamageRecorder
stepList a Heap()
lastStepTime 277121260
lastStepMessage nil
lastCycleTime 277123912
alarms a Heap(MorphicAlarm(#hideShow -> a RubCursor(162526720)))
lastAlarmTime 277123891
menuBuilder a PragmaMenuBuilder ( nil )
activeHand a HandMorph(677264640)
currentCursor ((CursorWithMask
extent: (16@16)
depth: 1
fromArray: #(
2r0
2r0
2r0
2r0
2r0
2r100000010000000000000000000
2r1100000011000000000000000000
2r11100000011100000000000000000
2r11111111...etc...
worldRenderer a VMWorldRenderer
realWindowExtent (1920@1033)
----------------------------------------------------------------------------------------------------
WorldMorph>>doOneCycle
receiver
a WorldMorph(691814656) [world]
temps
inst vars
bounds (0@0) corner: (1920@1033)
owner nil
submorphs an Array(a MenubarMorph(1031397632) a TaskbarMorph(351923968) a SystemWindow(199374848) named: BugReporter a SpecWindow(486588928) named: Working copy of BugReport a SystemWindow(996783872) named: Bas...etc...
fullBounds (0@0) corner: (1920@1033)
color (Color r: 0.05865102639296188 g: 0.07331378299120235 b: 0.10557184750733138 alpha: 1.0)
extension a MorphExtension (704038144) [other: (dragEnabled -> true) (dropEnabled -> true) (kmDispatcher -> a KMDispatcher)]
borderWidth 0
borderColor (Color r: 0.8611925708699902 g: 1.0 b: 0.7223851417399805 alpha: 1.0)
backgroundMorph an AlphaImageMorph(939675904)
worldState a WorldState
griddingOn nil
----------------------------------------------------------------------------------------------------
WorldMorph class>>doOneCycle
receiver
WorldMorph
temps
inst vars
superclass PasteUpMorph
methodDict a MethodDictionary(#acceptDroppingMorph:event:->WorldMorph>>#acceptDroppingMorph:event: #activateCursor:->WorldMorph>>#activateCursor: #activateCursor:withMask:->WorldMorph>>#activateCursor:withMask: ...etc...
format 65547
layout a FixedLayout
organization a ClassOrganization
subclasses {AthensWorldMorph. OSWindowWorldMorph}
name #WorldMorph
classPool a Dictionary(#AllowDropFiles->nil #CursorOwnerWorld->a WorldMorph(691814656) [world] #ExtraWorldList->#() )
sharedPools an OrderedCollection()
environment a SystemDictionary(lots of globals)
category #'Morphic-Core-Worlds'
announcer nil
displayScaleFactor 1
----------------------------------------------------------------------------------------------------
[ [ WorldMorph doOneCycle.
Processor yield.
false ] whileFalse: [ ] ] in MorphicUIManager>>spawnNewProcess
receiver
a MorphicUIManager
temps
inst vars
activeTranscript nil
----------------------------------------------------------------------------------------------------
[ self value.
Processor terminateActive ] in BlockClosure>>newProcess
receiver
[ [ WorldMorph doOneCycle.
Processor yield.
false ] whileFalse: [ ] ]
temps
inst vars
outerContext MorphicUIManager>>spawnNewProcess
startpc 125
numArgs 0
</details>
Version management
This project use semantic versioning to define the releases. This means that each stable release of the project will be assigned a version number of the form vX.Y.Z
.
- X defines the major version number
- Y defines the minor version number
- Z defines the patch version number
When a release contains only bug fixes, the patch number increases. When the release contains new features that are backward compatible, the minor version increases. When the release contains breaking changes, the major version increases.
Thus, it should be safe to depend on a fixed major version and moving minor version of this project.
Smalltalk versions compatibility
Version | Compatible Pharo versions |
---|---|
1.x.x | Pharo 61, 70, 80, 90, 100 |
Contact
If you have any questions or problems do not hesitate to open an issue or contact cyril (a) ferlicot.me