[squeak-dev] The Trunk: System-dtl.561.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Jul 9 23:43:00 UTC 2013


David T. Lewis uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-dtl.561.mcz

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

Name: System-dtl.561
Author: dtl
Time: 9 July 2013, 7:41:41.533 pm
UUID: 3be213f5-f8aa-4695-a6f0-5040cb0eff8d
Ancestors: System-dtl.560

Fix Debugger in MVC

Changes to Tools, System, ST80, Morphic, and ToolBuilder-Kernel to restore Debugger operation in MVC. Resolves several issues introduced in the Squeak 3.9 time frame. 

Add ToolBuilder>>openDebugger:label:closing: to specify a topLevel to close when transitioning from debug notifier to the debugger. This enables the transition from a debug notifier to the full debug window. MVC closes views and controllers in a rather specific order, and #openDebugger:label: was not sufficient to implement this properly.

Fix some errors in earlier Project refactorings that were causing a debugger in MVC to call a method to restart the (Morphic) UI process when interrupting the UI process. This resulted in two active controller processes running in MVC after resuming from a debugger. The spawnNewProcessIfThisIsUI: method is moved to the instance side of Project and becomes a no-op for an MVC project. Class side methods are retained to protect for possible references from external projects.

=============== Diff against System-dtl.560 ===============

Item was changed:
  ----- Method: Project class>>spawnNewProcess (in category 'utilities') -----
  spawnNewProcess
+ 	"Meaningful only for a Morphic project, but retained here to protect for possible
+ 	references from e.g. image segments"
  
  	UIProcess := [
  		[World doOneCycle.  Processor yield ] repeat.
  	] newProcess priority: Processor userSchedulingPriority.
  	UIProcess resume!

Item was changed:
  ----- Method: Project class>>spawnNewProcessIfThisIsUI: (in category 'squeaklet on server') -----
  spawnNewProcessIfThisIsUI: suspendedProcess
+ 	"Meaningful only for a Morphic project, but retained here to protect for possible
+ 	references from e.g. image segments"
  
+ 	self current spawnNewProcessIfThisIsUI: suspendedProcess
+ 
- 	self uiProcess == suspendedProcess ifTrue: [
- 		self spawnNewProcess.
- 		^true
- 	].
- 	^false		"no new process was created"
  !

Item was changed:
  ----- Method: Project>>dispatchTo:addPrefixAndSend:withArguments: (in category 'dispatching') -----
  dispatchTo: requestor addPrefixAndSend: baseSelector withArguments: arguments
  	"Sender wants to perform a method with dependencies on the type of project.
  	Dispatch to an appropriate method for the current project.
  	
  	This method is a workaround for lack of proper ToolBuilder support in the sender,
  	and should be eliminated when possible (dtl Feb 2010)"
  
  	| selector |
  	"Flag target selectors to help identify senders"
  	true ifFalse: [
  		self flag: #mvcOpenLabel:in: .
  		self flag: #morphicOpenLabel:in: .
  		self flag: #mvcStartUpLeftFlush .
  		self flag: #morphicStartUpLeftFlush .
  		self flag: #mvcStartUpWithCaption:icon:at:allowKeyboard: .
  		self flag: #morphicStartUpWithCaption:icon:at:allowKeyboard: .
  		self flag: #mvcOpen: .
  		self flag: #morphicOpen: .
  		self flag: #mvcOpen .
  		self flag: #morphicOpen .
  		self flag: #mvcOpenOn:context:label:contents:fullView: .
+ 		self flag: #morphicOpenOn:context:label:contents:fullView: .
+ 		self flag: #mvcResumeProcess: .
+ 		self flag: #morphicResumeProcess:
- 		self flag: #morphicOpenOn:context:label:contents:fullView:
  	].
  	selector := (self selectorPrefixForDispatch, baseSelector) asSymbol.
  	^ requestor perform: selector withArguments: arguments!

Item was added:
+ ----- Method: Project>>spawnNewProcessIfThisIsUI: (in category 'active process') -----
+ spawnNewProcessIfThisIsUI: suspendedProcess
+ 	"Initialize a UI process if needed. Answer true if suspendedProcess was interrupted
+ 	from a UI process."
+ 	self subclassResponsibility!



More information about the Squeak-dev mailing list