[squeak-dev] The Trunk: Morphic-mt.1816.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Dec 7 10:48:22 UTC 2021

Marcel Taeumel uploaded a new version of Morphic to project The Trunk:

==================== Summary ====================

Name: Morphic-mt.1816
Author: mt
Time: 7 December 2021, 11:48:09.738083 am
UUID: 523fa253-49bb-a447-9bb3-bbbc9e1c8e66
Ancestors: Morphic-ct.1815

Small workaround to make preference #openToolsAttachedToMouseCursor work more reliably during debugger invocation.

=============== Diff against Morphic-ct.1815 ===============

Item was changed:
  ----- Method: MorphicDebugger class>>openOn:context:label:contents:fullView: (in category 'opening') -----
  openOn: processToDebug context: context label: title contents: contentsStringOrNil fullView: full 
  	| debugger uiBlock |
  	debugger := self new
  		process: processToDebug context: context;
  		errorWasInUIProcess: (Project current spawnNewProcessIfThisIsUI: processToDebug).
  	uiBlock := [
  			ifTrue: [debugger openFullNoSuspendLabel: title]
  			ifFalse: [debugger openNotifierNoSuspendContents: contentsStringOrNil label: title].
  		"Try layouting the debugger tool at least once to avoid freeze."
  		debugger topView ifNotNil: [:window |
  			"There are way too many #fullBounds sends. Layout errors might already have happened."
  			window allMorphsDo: [:m | (m hasProperty: #errorOnLayout) ifTrue: [self error: 'Layout error']].
  			window world doLayout. "Not safely!!"].
  		"Try drawing the debugger tool at least once to avoid freeze."
  		debugger topView ifNotNil: [:window | window world displayWorld. "Not safely!!"].
  	"Schedule debugging in a deferred UI message if necessary. Note that only the ui process should execute ui code."
  	(Project current uiProcess isActiveProcess not or: [processToDebug isActiveProcess])
+ 		ifFalse: uiBlock
+ 		ifTrue: [ | event |
+ 			self flag: #discuss. "mt: We need to preserve the currentEvent for #openToolsAttachedToMouseCursor ..."
+ 			event := self currentEvent.
+ 			Project current addDeferredUIMessage: [event becomeActiveDuring: uiBlock]].
- 		ifTrue: [Project current addDeferredUIMessage: uiBlock]
- 		ifFalse: uiBlock.
  	processToDebug suspend.
  	"Get here only if active process is not the process-to-debug. So in tests, use a helper process if you want to access this return value."
  	^ debugger!

More information about the Squeak-dev mailing list