A new version of Morphic was added to project The Inbox:
http://source.squeak.org/inbox/Morphic-ct.1496.mcz==================== Summary ====================
Name: Morphic-ct.1496
Author: ct
Time: 30 July 2019, 7:10:57.257625 pm
UUID: 271f51ee-4c31-e846-a326-9769dfab5c5f
Ancestors: Morphic-ct.1492, Morphic-mt.1495, Morphic-cmm.1489
Introduce 'debug invocation' of DialogWindow
Also refine context search to reduce displayed stack size.
(After opening debugger, useful applications might be: step over, answer the dialog and continue debugging; return entered value to fake user's response)
[I had some trouble saving the version. Please let me know if I my merging was incorrect ...]
=============== Diff against Morphic-ct.1492 ===============
Item was added:
+ ----- Method: DialogWindow>>debugInvocation (in category 'running') -----
+ debugInvocation
+
+ [Processor activeProcess
+ debug: self findInvocationContext
+ title: 'Dialog invocation']
+ ifCurtailed: [self closeDialog].!
Item was changed:
----- Method: DialogWindow>>exploreInvocation (in category 'running') -----
exploreInvocation
| result context |
self exclusive: false. "We want to explore."
result := OrderedCollection new.
+ context := self findInvocationContext.
- context := thisContext.
- [context method selector = #getUserResponse]
- whileFalse: [context := context sender].
-
[context sender] whileNotNil: [
result add: context method.
context := context sender].
result add: context method.
result explore.!
Item was added:
+ ----- Method: DialogWindow>>findInvocationContext (in category 'running') -----
+ findInvocationContext
+
+ | context |
+ context := thisContext.
+ [context method selector = #getUserResponse and: [context isMethodContext]]
+ whileFalse: [context := context sender].
+ ^ context!
Item was changed:
----- Method: DialogWindow>>offerDialogMenu (in category 'running') -----
offerDialogMenu
| menu |
menu := MenuMorph new defaultTarget: self.
menu
add: (exclusive == true ifTrue: ['<yes>'] ifFalse: ['<no>']), 'be modally exclusive' translated
+ action: #toggleExclusive;
- action: #toggleExclusive;
addLine;
add: 'explore dialog invocation' translated
+ action: #exploreInvocation;
+ add: 'debug dialog invocation' translated
+ action: #debugInvocation.
- action: #exploreInvocation.
menu popUpEvent: self currentEvent in: self world.
[menu isInWorld] whileTrue: [self world doOneSubCycle].
self exclusive ifTrue: [self activeHand newMouseFocus: self].!