[Pkg] The Trunk: ST80-dtl.147.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Jul 9 23:41:36 UTC 2013

David T. Lewis uploaded a new version of ST80 to project The Trunk:

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

Name: ST80-dtl.147
Author: dtl
Time: 9 July 2013, 7:40:45.461 pm
UUID: b049bf0e-1270-4e72-8560-85a844358fd6
Ancestors: ST80-fbs.146

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 ST80-fbs.146 ===============

Item was changed:
  ----- Method: ControlManager>>searchForActiveController (in category 'scheduling') -----
  	"Find a scheduled controller that wants control and give control to it. If 
  	none wants control, then see if the System Menu has been requested."
- 	| aController |
  	activeController := nil.
  	activeControllerProcess := Processor activeProcess.
  	self activeController: self nextActiveController.
  	Processor terminateActive!

Item was added:
+ ----- Method: Debugger>>mvcResumeProcess: (in category '*ST80-opening') -----
+ mvcResumeProcess: aTopView 
+ 	aTopView erase.
+ 	savedCursor
+ 		ifNotNil: [Sensor currentCursor: savedCursor].
+ 	interruptedProcess isTerminated ifFalse: [
+ 		ScheduledControllers activeControllerNoTerminate: interruptedController andProcess: interruptedProcess].
+ 	"if old process was terminated, just terminate current one"
+ 	interruptedProcess := nil. "Before delete, so release doesn't terminate it"
+ 	aTopView controller closeAndUnscheduleNoErase.
+ 	Smalltalk installLowSpaceWatcher. "restart low space handler"
+ 	Processor terminateActive
+ !

Item was added:
+ ----- Method: MVCProject>>spawnNewProcessIfThisIsUI: (in category 'active process') -----
+ spawnNewProcessIfThisIsUI: suspendedProcess
+ 	"In MVC the debugger does not require special handling to start a new UI process
+ 	when the active controller process is interrupted in the debugger."
+ 	^true!

Item was added:
+ ----- Method: MVCToolBuilder>>openDebugger:label:closing: (in category 'opening') -----
+ openDebugger: anObject label: aString closing: topView
+ 	"Build an open the object, labeling it appropriately.  Answer the widget opened."
+ 	| window |
+ 	topView controller controlTerminate.
+ 	topView deEmphasize; erase.
+ 	"a few hacks to get the scroll selection artifacts out when we got here by clicking in the list"
+ "	topView subViewWantingControl ifNotNil: [
+ 		topView subViewWantingControl controller controlTerminate
+ 	]."
+ 	topView controller status: #closed.
+ 	window := self build: anObject.
+ 	window label: aString.
+ 	window controller openNoTerminate.
+ 	topView controller closeAndUnscheduleNoErase.
+ 	Processor terminateActive.
+ 	^window!

More information about the Packages mailing list