[squeak-dev] The Trunk: Morphic-ar.311.mcz
commits at source.squeak.org
commits at source.squeak.org
Sat Jan 23 22:49:54 UTC 2010
Andreas Raab uploaded a new version of Morphic to project The Trunk:
http://source.squeak.org/trunk/Morphic-ar.311.mcz
==================== Summary ====================
Name: Morphic-ar.311
Author: ar
Time: 23 January 2010, 2:48:15.733 pm
UUID: 06e2c59f-5bea-714d-aef1-db97ddaec6c2
Ancestors: Morphic-ar.310, Morphic-nice.277
Merging Morphic-nice.277:
Experimental: let a Rectangle merge in place (I called this swallow:)
This has two advantages:
- avoid repeated Object creation when we just want the gross result
- avoid closures writing to outer temps
IMHO, generalizing this kind of policy could have a measurable impact on GUI speed.
However, this is against current policy to never change a Point nor rectangle in place, so I let gurus judge if worth or not.
=============== Diff against Morphic-ar.310 ===============
Item was changed:
----- Method: SelectionMorph>>drawOn: (in category 'drawing') -----
drawOn: aCanvas
| canvas form1 form2 box |
super drawOn: aCanvas.
+ box := self bounds copy.
+ selectedItems do: [:m | box swallow: m fullBounds].
- box := self bounds.
- selectedItems do: [:m | box := box merge: m fullBounds].
box := box expandBy: 1.
canvas := Display defaultCanvasClass extent: box extent depth: 8.
canvas translateBy: box topLeft negated
during: [:tempCanvas | selectedItems do: [:m | tempCanvas fullDrawMorph: m]].
form1 := (Form extent: box extent) copyBits: (0 at 0 extent: box extent) from: canvas form at: 0 at 0 colorMap: (Color maskingMap: 8).
form2 := Form extent: box extent.
(0 at 0) fourNeighbors do: [:d | form1 displayOn: form2 at: d rule: Form under].
form1 displayOn: form2 at: 0 at 0 rule: Form erase.
aCanvas stencil: form2
at: box topLeft
sourceRect: form2 boundingBox
color: self borderColor
!
Item was changed:
----- Method: PolygonMorph>>computeBounds (in category 'private') -----
computeBounds
| oldBounds delta excludeHandles |
vertices ifNil: [^ self].
self changed.
oldBounds := bounds.
self releaseCachedState.
+ bounds := self curveBounds expanded copy.
- bounds := self curveBounds expanded.
self arrowForms do:
+ [:f | bounds swallow: (f offset extent: f extent)].
- [:f | bounds := bounds merge: (f offset extent: f extent)].
handles ifNotNil: [self updateHandles].
"since we are directly updating bounds, see if any ordinary submorphs exist and move them accordingly"
(oldBounds notNil and: [(delta := bounds origin - oldBounds origin) ~= (0 at 0)]) ifTrue: [
excludeHandles := IdentitySet new.
handles ifNotNil: [excludeHandles addAll: handles].
self submorphsDo: [ :each |
(excludeHandles includes: each) ifFalse: [
each position: each position + delta
].
].
].
self layoutChanged.
self changed.
!
Item was changed:
----- Method: TextContainer>>bounds (in category 'private') -----
bounds
| bounds theText |
self fillsOwner ifFalse: [^ textMorph textBounds].
theText := textMorph.
bounds := theText owner innerBounds.
bounds := bounds insetBy: (textMorph valueOfProperty: #margins ifAbsent: [1 at 1]).
theText owner submorphsBehind: theText do:
+ [:m | bounds swallow: m fullBounds].
- [:m | bounds := bounds merge: m fullBounds].
^ bounds!
More information about the Squeak-dev
mailing list
|