[squeak-dev] The Trunk: ST80-nice.78.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Dec 26 22:47:28 UTC 2009


Nicolas Cellier uploaded a new version of ST80 to project The Trunk:
http://source.squeak.org/trunk/ST80-nice.78.mcz

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

Name: ST80-nice.78
Author: nice
Time: 26 December 2009, 11:47:03 am
UUID: 213d76c1-73e2-41a1-8bce-3aae46a37774
Ancestors: ST80-nice.77

Cosmetic: puch a few temps inside closures

=============== Diff against ST80-nice.77 ===============

Item was changed:
  ----- Method: ParagraphEditor>>browseClassFromIt (in category 'menu messages') -----
  browseClassFromIt
  	"Launch a browser for the class indicated by the current selection. 
  	If multiple classes matching the selection exist, let the user choose among them."
+ 	| aClass |
- 	| aBrow aClass |
  	self
  		lineSelectAndEmptyCheck: [^ self].
  	aClass := Utilities
  				classFromPattern: (self selection string copyWithoutAll: CharacterSet separators)
  				withCaption: 'choose a class to browse...'.
  	aClass
  		ifNil: [^ view flash].
  	self
  		terminateAndInitializeAround: 
+ 			[| aBrow |
+ 			aBrow := SystemBrowser default new.
- 			[aBrow := SystemBrowser default new.
  			aBrow setClass: aClass selector: nil.
  			aBrow class
  				openBrowserView: (aBrow openEditString: nil) label: 'System Browser'].!

Item was changed:
  ----- Method: ParagraphEditor>>presentSpecialMenu (in category 'menu messages') -----
  presentSpecialMenu
  	"Present a list of expressions, and if the user chooses one, evaluate it in the context of the receiver, a ParagraphEditor.  Primarily for debugging, this provides a convenient way to talk to the various views, controllers, and models associated with any text pane"
  
- 	| reply items |
  	self terminateAndInitializeAround:
+ 		[| reply items |
+ 		reply := (UIManager default chooseFrom: (items := self specialMenuItems) lines: #()).
- 		[reply := (UIManager default chooseFrom: (items := self specialMenuItems) lines: #()).
  		reply = 0 ifTrue: [^ self].
  		Compiler new evaluate: (items at: reply) in: [] to: self]
  	!

Item was changed:
  ----- Method: Paragraph>>clickAt:for:controller: (in category 'selecting') -----
  clickAt: clickPoint for: model controller: aController
  	"Give sensitive text a chance to fire.  Display flash: (100 at 100 extent: 100 at 100)."
+ 	| startBlock action |
- 	| startBlock action range box boxes |
  	action := false.
  	startBlock := self characterBlockAtPoint: clickPoint.
  	(text attributesAt: startBlock stringIndex forStyle: textStyle) 
  		do: [:att | att mayActOnClick ifTrue:
+ 				[| range boxes box |
+ 				range := text rangeOf: att startingAt: startBlock stringIndex.
- 				[range := text rangeOf: att startingAt: startBlock stringIndex.
  				boxes := self selectionRectsFrom: (self characterBlockForIndex: range first) 
  							to: (self characterBlockForIndex: range last+1).
  				box := boxes detect: [:each | each containsPoint: clickPoint]
  							ifNone: [^ action].
  				Utilities awaitMouseUpIn: box repeating: []
  					ifSucceed: [aController terminateAndInitializeAround:
  								[(att actOnClickFor: model in: self at: clickPoint editor: aController) ifTrue: [action := true]]]]].
  	^ action!

Item was changed:
  ----- Method: PopUpMenu>>startUpLeftFlush (in category 'accessing') -----
  startUpLeftFlush
  	"Build and invoke this menu with no initial selection.  By Jerry Archibald, 4/01.
  	If in MVC, align menus items with the left margin.
  	Answer the selection associated with the menu item chosen by the user or nil if none is chosen.  
  	The mechanism for getting left-flush appearance in mvc leaves a tiny possibility for misadventure: if the user, in mvc, puts up the jump-to-project menu, then hits cmd period while it is up, then puts up a second jump-to-project menu before dismissing or proceeding through the debugger, it's possible for mvc popup-menus thereafter to appear left-aligned rather than centered; this very unlikely condition can be cleared by evaluating 'PopUpMenu alignment: 2'"
  
+ 	| saveAlignment |
- 	| saveAlignment result |
  	Smalltalk isMorphic ifFalse:
  		[saveAlignment := PopUpMenu alignment.
  		PopUpMenu leftFlush].
+ 	^[self startUp] ensure:
- 	[result := self startUp] ensure:
  		[Smalltalk isMorphic ifFalse:
+ 			[PopUpMenu alignment: saveAlignment]].!
- 			[PopUpMenu alignment: saveAlignment]].
- 	^ result!

Item was changed:
  ----- Method: StandardSystemView>>chooseMoveRectangle (in category 'framing') -----
  chooseMoveRectangle
  	"Ask the user to designate a new window rectangle."
+ 	| offset |
- 	| offset p |
  	offset := Sensor anyButtonPressed "Offset if draggin, eg, label"
  		ifTrue: [self windowBox topLeft - Sensor cursorPoint]
  		ifFalse: [0 at 0].
  	self isCollapsed
  		ifTrue: [^ self labelDisplayBox newRectFrom:
+ 					[:f | | p |
+ 					p := Sensor cursorPoint + offset.
- 					[:f | p := Sensor cursorPoint + offset.
  					p := (p max: 0 at 0) truncateTo: 8.
  					p extent: f extent]]
  		ifFalse: [^ self windowBox newRectFrom:
+ 					[:f | | p |
+ 					p := Sensor cursorPoint + offset.
- 					[:f | p := Sensor cursorPoint + offset.
  					self constrainFrame: (p extent: f extent)]]!

Item was changed:
  ----- Method: ParagraphEditor>>browseIt (in category 'menu messages') -----
  browseIt
  	"Launch a browser for the current selection, if appropriate"
  
+ 	| aSymbol |
- 	| aSymbol anEntry |
  	self flag: #yoCharCases.
  
  	Preferences alternativeBrowseIt ifTrue: [^ self browseClassFromIt].
  
  	self lineSelectAndEmptyCheck: [^ self].
  	(aSymbol := self selectedSymbol) isNil ifTrue: [^ view flash].
  
  	self terminateAndInitializeAround:
  		[aSymbol first isUppercase
  			ifTrue:
+ 				[| anEntry |
+ 				anEntry := (Smalltalk
- 				[anEntry := (Smalltalk
  					at: aSymbol
  					ifAbsent:
  						[ self systemNavigation browseAllImplementorsOf: aSymbol.
  						^ nil]).
  				anEntry isNil ifTrue: [^ view flash].
  				(anEntry isBehavior or: [ anEntry isTrait ])
  					ifFalse: [ anEntry := anEntry class ].
  				ToolSet browse: anEntry selector: nil.
  		] ifFalse:[ self systemNavigation browseAllImplementorsOf: aSymbol]]!

Item was changed:
  ----- Method: StandardSystemView>>subviewWithLongestSide:near: (in category 'private') -----
  subviewWithLongestSide: sideBlock near: aPoint 
+ 	| theSub theSide theLen |
- 	| theSub theSide theLen box |
  	theLen := 0.
  	subViews do:
+ 		[:sub |
+ 		| box |
+ 		box := sub insetDisplayBox.
- 		[:sub | box := sub insetDisplayBox.
  		box forPoint: aPoint closestSideDistLen:
  			[:side :dist :len |
  			(dist <= 5 and: [len > theLen]) ifTrue:
  				[theSub := sub.
  				theSide := side.
  				theLen := len]]].
  	sideBlock value: theSide.
  	^ theSub!

Item was changed:
  ----- Method: ParagraphEditor>>inOutdent:delta: (in category 'editing keys') -----
  inOutdent: characterStream delta: delta
  	"Add/remove a tab at the front of every line occupied by the selection. Flushes typeahead.  Derived from work by Larry Tesler back in December 1985.  Now triggered by Cmd-L and Cmd-R.  2/29/96 sw"
  
  	| realStart realStop lines startLine stopLine start stop adjustStart indentation size numLines inStream newString outStream |
  	
  	sensor keyboard.  "Flush typeahead"
  
  	"Operate on entire lines, but remember the real selection for re-highlighting later"
  	realStart := self startIndex.
  	realStop := self stopIndex - 1.
  
  	"Special case a caret on a line of its own, including weird case at end of paragraph"
  	(realStart > realStop and:
  				[realStart < 2 or: [(paragraph string at: realStart - 1) == Character cr or: [(paragraph string at: realStart - 1) == Character lf]]])
  		ifTrue:
  			[delta < 0
  				ifTrue:
  					[view flash]
  				ifFalse:
  					[self replaceSelectionWith: Character tab asSymbol asText.
  					self selectAt: realStart + 1].
  			^ true].
  
  	lines := paragraph lines.
  	startLine := paragraph lineIndexOfCharacterIndex: realStart.
  	stopLine := paragraph lineIndexOfCharacterIndex: (realStart max: realStop).
  	start := (lines at: startLine) first.
  	stop := (lines at: stopLine) last.
  	
  	"Pin the start of highlighting unless the selection starts a line"
  	adjustStart := realStart > start.
  
  	"Find the indentation of the least-indented non-blank line; never outdent more"
  	indentation := (startLine to: stopLine) inject: 1000 into:
  		[:m :l |
+ 		m min: (paragraph indentationOfLineIndex: l ifBlank: [:tabs | 1000])].			
- 		m := m min: (paragraph indentationOfLineIndex: l ifBlank: [:tabs | 1000])].			
  
  	size :=  stop + 1 - start.
  	numLines := stopLine + 1 - startLine.
  	inStream := ReadStream on: paragraph string from: start to: stop.
  
  	newString := WideString new: size + ((numLines * delta) max: 0).
  	outStream := ReadWriteStream on: newString.
  
  	"This subroutine does the actual work"
  	self indent: delta fromStream: inStream toStream: outStream.
  
  	"Adjust the range that will be highlighted later"
  	adjustStart ifTrue: [realStart := (realStart + delta) max: start].
  	realStop := realStop + outStream position - size.
  
  	"Prepare for another iteration"
  	indentation := indentation + delta.
  	size := outStream position.
  	inStream := outStream setFrom: 1 to: size.
  
  	outStream == nil
  		ifTrue: 	"tried to outdent but some line(s) were already left flush"
  			[view flash]
  		ifFalse:
  			[self selectInvisiblyFrom: start to: stop.
  			size = newString size ifFalse: [newString := outStream contents].
  			self replaceSelectionWith: newString asText].
  	self selectFrom: realStart to: realStop. 	"highlight only the original range"
  	^ true!

Item was changed:
  ----- Method: ParagraphEditor>>selectionAsTiles (in category 'menu messages') -----
  selectionAsTiles
  	"Try to make new universal tiles from the selected text"
+ 	| selection |
- 	| selection tiles |
  
  	selection := self selection.
  	self terminateAndInitializeAround:
+ 		[| tiles |
+ 		self currentHand attachMorph: (tiles := Player tilesFrom: selection).
- 		[self currentHand attachMorph: (tiles := Player tilesFrom: selection).
  		Preferences tileTranslucentDrag
  			ifTrue: [tiles lookTranslucent]
  			ifFalse: [tiles align: tiles topLeft 
  			 			with: self currentHand position + tiles cursorBaseOffset]].!

Item was changed:
  ----- Method: StandardSystemView>>reframePanesAdjoining:along:to: (in category 'framing') -----
  reframePanesAdjoining: subView along: side to: aDisplayBox 
+ 	| delta newRect minDim theMin |
- 	| newBox delta newRect minDim theMin |
  	newRect := aDisplayBox.
  	theMin := 16.
  	"First check that this won't make any pane smaller than theMin screen dots"
  	minDim := ((subViews select: [:sub | sub displayBox bordersOn: subView displayBox along: side])
  		collect: [:sub | sub displayBox adjustTo: newRect along: side])
  			inject: 999 into: [:was :rect | (was min: rect width) min: rect height].
  	"If so, amend newRect as required"
  	minDim < theMin ifTrue:
  		[delta := minDim - theMin.
  		newRect := newRect withSide: side setTo: 
  				((newRect perform: side) > (subView displayBox perform: side)
  					ifTrue: [(newRect perform: side) + delta]
  					ifFalse: [(newRect perform: side) - delta])].
  	"Now adjust all adjoining panes for real"
  	subViews do:
  		[:sub | (sub displayBox bordersOn: subView displayBox along: side) ifTrue:
+ 			[| newBox |
+ 			newBox := sub displayBox adjustTo: newRect along: side.
- 			[newBox := sub displayBox adjustTo: newRect along: side.
  			sub window: sub window viewport:
  				(sub transform: (sub inverseDisplayTransform: newBox)) rounded]].
  	"And adjust the growing pane itself"
  	subView window: subView window viewport:
  			(subView transform: (subView inverseDisplayTransform: newRect)) rounded.
  
  	"Finally force a recomposition of the whole window"
  	viewport := nil.
  	self resizeTo: self viewport.
  	self uncacheBits; displayEmphasized!

Item was changed:
  ----- Method: StandardSystemController>>adjustWindowCorners (in category 'borders') -----
  adjustWindowCorners 
+ 	| box clicked |
- 	| box cornerBox p clicked f2 |
  	box := view windowBox.
  	clicked := false.
  	#(topLeft topRight bottomRight bottomLeft)
  		do: [:readCorner |
+ 			| cornerBox |
  			cornerBox := ((box insetBy: 2) perform: readCorner) - (10 at 10) extent: 20 at 20.
  			(cornerBox containsPoint: sensor cursorPoint)
  				ifTrue: 
  				["Display reverse: cornerBox."
  				(Cursor perform: readCorner) showWhile:
+ 					[[(cornerBox containsPoint: (sensor cursorPoint))
- 					[[(cornerBox containsPoint: (p := sensor cursorPoint))
  						and: [(clicked := sensor anyButtonPressed) not]]
  						whileTrue: [ self interActivityPause ].
  				"Display reverse: cornerBox."
  				clicked ifTrue:
  					[view newFrame:
+ 						[:f | | p f2 |
+ 						p := sensor cursorPoint.
- 						[:f | p := sensor cursorPoint.
  						readCorner = #topLeft ifTrue:
  							[f2 := p corner: f bottomRight].
  						readCorner = #bottomLeft ifTrue:
  							[f2 := (f withBottom: p y) withLeft: p x].
  						readCorner = #bottomRight ifTrue:
  							[f2 := f topLeft corner: p].
  						readCorner = #topRight ifTrue:
  							[f2 := (f withTop: p y) withRight: p x].
  						f2]]]]].
  	^ clicked!

Item was changed:
  ----- Method: StandardSystemView>>setUpdatablePanesFrom: (in category 'updating') -----
  setUpdatablePanesFrom: getSelectors
- 	| aList aPane |
  	"Set my updatablePanes inst var to the list of panes which are list panes with the given get-list selectors.  Order is important here!!  Note that the method is robust in the face of panes not found, but a warning is printed in the transcript in each such case"
+ 	| aList |
- 
  	aList := OrderedCollection new.
  	getSelectors do:
+ 		[:sel | 
+ 			| aPane |
+ 			aPane := self subViewSatisfying:
- 		[:sel | aPane := self subViewSatisfying:
  				[:pane | (pane isKindOf: PluggableListView) and: [pane getListSelector == sel]].
  			aPane
  				ifNotNil:
  					[aList add: aPane]
  				ifNil:
  					[Transcript cr; show: 'Warning: view ', sel, ' not found.']].
  	updatablePanes := aList asArray!




More information about the Squeak-dev mailing list