Marcel Taeumel uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-mt.248.mcz==================== Summary ====================
Name: ST80-mt.248
Author: mt
Time: 25 February 2020, 3:12:26.773399 pm
UUID: 17a7a172-a0e4-fa46-89c9-da27f537f779
Ancestors: ST80-mt.247
Fixes an issue with debugging a process at hand, which is used when entering MVC as recovery for Morphic. Example: "[ 3 + 4 ] newProcess debug".
After this fix, the strange re-draw glitches are gone. BUT, the debugger opens only after, for example, opening the world menu once. That's related to #addDeferredUIMessage: and not having the right controller at hand in #enterForEmergencyRecovery. Not that important for 5.3.
=============== Diff against ST80-mt.247 ===============
Item was changed:
----- Method: MVCDebugger class>>openOn:context:label:contents:fullView: (in category 'opening') -----
openOn: processToDebug context: context label: title contents: contentsStringOrNil fullView: full
"Open a notifier in response to an error, halt, or notify. A notifier view just shows a short view of the sender stack and provides a menu that lets the user open a full debugger."
| debugger cm ac acp wasActive |
cm := Project current world. "controller manager"
ac := cm activeController.
acp := cm activeControllerProcess. "the ui process"
wasActive := cm inActiveControllerProcess.
debugger := self new
process: processToDebug
"Keep track of the controller if it matches."
controller: (acp == processToDebug ifTrue: [ac])
context: context.
full
ifTrue: [debugger openFullNoSuspendLabel: title]
ifFalse: [debugger openNotifierNoSuspendContents: contentsStringOrNil label: title].
"Try drawing the debugger tool at least once to avoid freeze."
Project current restoreDisplay.
+ "If we are in a helper process, #openNoTerminate WILL NOT activate the debugger's controller. Example: user-interrupt request (cmd+dot)."
- "If we are in a helper process, #openNoTerminate WILL NOT activate the debugger's controller."
(acp == processToDebug and: [wasActive not])
ifTrue: [ [cm searchForActiveController] fork ].
+ "Be sure to suspend the process we want to debug now."
processToDebug suspend.
+
+ "If we are NOT in a helper process, #openNoTerminate WILL NOT terminate the active controller's process."
+ (acp ~~ processToDebug and: [wasActive])
+ ifTrue: [ Processor terminateActive ].
"Get here only if active process is not the process-to-debug. Use helper process if you want to access this return value."
^ debugger!