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

commits at source.squeak.org commits at source.squeak.org
Tue Dec 10 14:19:03 UTC 2019


Marcel Taeumel uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-mt.1607.mcz

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

Name: Morphic-mt.1607
Author: mt
Time: 10 December 2019, 3:18:55.581553 pm
UUID: c0e39112-b003-f94a-aee8-b06b6642074f
Ancestors: Morphic-ct.1605, Morphic-ct.1606

Merges Morphic-ct.1605 and Morphic-ct.1606 which fixes two issues:
1) dialog window did not disappear on CMD+Dot
2) text selection got messed up during interactive error correction in parser

=============== Diff against Morphic-ct.1605 ===============

Item was changed:
  ----- Method: DialogWindow>>getUserResponse (in category 'running') -----
  getUserResponse
  
  	| hand world |
  	self message ifEmpty: [messageMorph delete]. "Do not waste space."
  	self paneMorph submorphs
  		ifEmpty: ["Do not waste space and avoid strange button-row wraps."
  			self paneMorph delete.
  			self buttonRowMorph wrapDirection: #none]. 
  	
  	hand := self currentHand.
  	world := self currentWorld.
  
  	self fullBounds.
  	self moveToPreferredPosition.
  	self openInWorld: world.
  	
  	hand showTemporaryCursor: nil. "Since we are out of context, reset the cursor."
  	
  	hand keyboardFocus in: [:priorKeyboardFocus |
  		hand mouseFocus in: [:priorMouseFocus |
  			self exclusive ifTrue: [hand newMouseFocus: self].
  			hand newKeyboardFocus: self.
  
  			[[self isInWorld] whileTrue: [world doOneSubCycle]]
+ 				ifCurtailed: [self cancelDialog].
- 				ifCurtailed: [self abandon].
  
  			hand newKeyboardFocus: priorKeyboardFocus.
  			hand newMouseFocus: priorMouseFocus]].
  
  	^ result!

Item was changed:
  ----- Method: TextEditor>>evaluateSelectionAndDo: (in category 'do-its') -----
  evaluateSelectionAndDo: aBlock
  	"Treat the current selection as an expression; evaluate it and invoke aBlock with the result."
+ 
+ 	| result rcvr ctxt selectionInterval |
- 	| result rcvr ctxt |
  	self lineSelectAndEmptyCheck: [^ nil].
  
  	(model respondsTo: #evaluateExpression:) ifTrue: [
  		^ aBlock value: (model perform: #evaluateExpression: with: self selection)].
  
  	(model respondsTo: #doItReceiver) 
  		ifTrue: [ rcvr := model doItReceiver.
  				ctxt := model doItContext]
  		ifFalse: [rcvr := ctxt := nil].
+ 
+ 	selectionInterval := self selectionInterval.
+ 	result := [[
- 	result := [
  		rcvr class evaluatorClass new 
  			evaluate: self selectionAsStream
  			in: ctxt
  			to: rcvr
  			environment: (model environment ifNil: [Smalltalk globals])
  			notifying: self
  			ifFail: [morph flash. ^ nil]
  			logged: true.
  	] 
  		on: OutOfScopeNotification 
+ 		do: [ :ex | ex resume: true]
+ 	]
+ 		ensure: [
+ 			"The parser might change the current selection for interactive error correction."
+ 			self selectInterval: selectionInterval].
+ 	
- 		do: [ :ex | ex resume: true].
- 		
  	(model respondsTo: #expressionEvaluated:result:) ifTrue: [
  		model perform: #expressionEvaluated:result: with: self selection with: result].
  		
  	^aBlock value: result!



More information about the Squeak-dev mailing list