[squeak-dev] The Trunk: Tools-dtl.269.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Sep 12 19:48:20 UTC 2010


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

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

Name: Tools-dtl.269
Author: dtl
Time: 12 September 2010, 3:41:47.258 pm
UUID: 041a5a4b-3607-49e8-9bb5-7f1273c081a1
Ancestors: Tools-eem.268

MVC fixes by Florin Mateoc to address debugger opening, including low space interrupt and user interrupt in MVC.

=============== Diff against Tools-eem.268 ===============

Item was changed:
  ----- Method: Debugger class>>openOn:context:label:contents:fullView: (in category 'opening') -----
  openOn: process context: context label: title contents: contentsStringOrNil fullView: bool
  	"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."
  
+ 	| controller errorWasInUIProcess debugger |
- 	| controller errorWasInUIProcess block |
  	Smalltalk isMorphic
  		ifTrue: [errorWasInUIProcess := Project spawnNewProcessIfThisIsUI: process]
+ 		ifFalse: [
+ 			controller := ScheduledControllers activeControllerProcess == process
+ 				ifTrue: [ScheduledControllers activeController].
+ 			[
- 		ifFalse: [controller := ScheduledControllers activeControllerProcess == process
- 				ifTrue: [ScheduledControllers activeController]].
- 	block := [ 
- 		[	| debugger |
- 
  			debugger := self new process: process controller: controller context: context.
+ 			bool
+ 				ifTrue: [debugger openFullNoSuspendLabel: title]
+ 				ifFalse: [debugger openNotifierContents: contentsStringOrNil label: title].
+ 			Preferences logDebuggerStackToFile ifTrue: [
+ 				Smalltalk logError: title inContext: context to: 'SqueakDebug.log'].
+ 			] on: Error do: [:ex |
+ 				self primitiveError: 
+ 					'Orginal error: ', 
+ 					title asString, '.
+ 	Debugger error: ', 
+ 				([ex description] on: Error do: ['a ', ex class printString]), ':'
+ 			]].
+ 	WorldState addDeferredUIMessage: [ 
+ 		"schedule debugger in deferred UI message to address redraw
+ 		problems after opening a debugger e.g. from the testrunner."
+ 		[
+ 			debugger := self new process: process controller: nil context: context.
+ 			bool
+ 				ifTrue: [debugger openFullNoSuspendLabel: title]
+ 				ifFalse: [debugger openNotifierContents: contentsStringOrNil label: title].
- 			Smalltalk isMorphic
- 				ifTrue: ["schedule debugger in deferred UI message to address redraw
- 						problems after opening a debugger e.g. from the testrunner."
- 					"WorldState addDeferredUIMessage: ["bool
- 						ifTrue: [debugger openFullNoSuspendLabel: title]
- 						ifFalse: [debugger openNotifierContents: contentsStringOrNil label: title]]
- 				ifFalse: ["deferred UI message would require special controller in MVC"
- 					bool
- 						ifTrue: [debugger openFullNoSuspendLabel: title]
- 						ifFalse: [debugger openNotifierContents: contentsStringOrNil label: title]].
  			debugger errorWasInUIProcess: errorWasInUIProcess.
  			Preferences logDebuggerStackToFile ifTrue: [
  				Smalltalk logError: title inContext: context to: 'SqueakDebug.log'].
- 			Smalltalk isMorphic
- 				ifFalse: [ScheduledControllers searchForActiveController "needed since openNoTerminate (see debugger #open...) does not set up activeControllerProcess if activeProcess (this fork) is not the current activeControllerProcess (see #scheduled:from:)"].
  		] on: Error do: [:ex |
  			self primitiveError: 
  				'Orginal error: ', 
  				title asString, '.
  	Debugger error: ', 
  				([ex description] on: Error do: ['a ', ex class printString]), ':'
  		]
  	].
+ 	process suspend.
+ !
- 	self ifPreferredInterruptUIProcessIfBlocked: errorWasInUIProcess.
- 	Project current addDeferredUIMessage: block.
- 	process suspend!

Item was changed:
  ----- Method: Debugger>>openFullNoSuspendLabel: (in category 'initialize') -----
  openFullNoSuspendLabel: aString
  	"Create and schedule a full debugger with the given label. Do not terminate the current active process."
  
  	| oldContextStackIndex |
  	oldContextStackIndex := contextStackIndex.
  	self expandStack. "Sets contextStackIndex to zero."
+ 	ToolBuilder default openDebugger: self label: aString.
- 	ToolBuilder open: self label: aString.
  	self toggleContextStackIndex: oldContextStackIndex.!

Item was changed:
  ----- Method: Debugger>>openNotifierContents:label: (in category 'initialize') -----
  openNotifierContents: msgString label: label
  	"Create and schedule a notifier view with the given label and message. A notifier view shows just the message or the first several lines of the stack, with a menu that allows the user to open a full debugger if so desired."
  	"NOTE: When this method returns, a new process has been scheduled to run the windows, and thus this notifier, but the previous active porcess has not been suspended.  The sender will do this."
  	| msg builder spec |
  	Sensor flushKeyboard.
  	savedCursor := Sensor currentCursor.
  	Sensor currentCursor: Cursor normal.
  	(label beginsWith: 'Space is low')
  		ifTrue: [msg := self lowSpaceChoices, (msgString ifNil: [''])]
  		ifFalse: [msg := msgString].
  	builder := ToolBuilder default.
  	spec := self buildNotifierWith: builder label: label message: msg.
  	self expandStack.
+ 	builder openDebugger: spec.
- 	builder open: spec.
  	errorWasInUIProcess := Project spawnNewProcessIfThisIsUI: interruptedProcess.
  !




More information about the Squeak-dev mailing list