The Trunk: ST80-dtl.147.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: ST80-dtl.147.mcz

commits-2
David T. Lewis uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-dtl.147.mcz

==================== 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') -----
  searchForActiveController
  "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!