Herewith a digest of 23 (count 'em) updates that I have just posted to the Squeak servers. Lots of cool stuff and many bug fixes, available now.
You may want to just chill out for a day, though, as I plan to turn around as quickly as possible and release a new, fully updated image, and bless it as Squeak 2.1.
More to follow...
In keeping with other browsers, ChangeSorters now support
'revert to previous version'
'revert and forget'.
revertToPreviousVersion has been fixed to work in Morphic.
Form hibernate now requires only half as much temporary storage.
The flash of Morphic text panes is now properly transformed (ie, not at 0@0).
Low-space interrupts now work in Morphic.
MVC projects and links to them can now be created and used in Morphic.
Fixed a recent bug in ChangeSorter 'show'
Added SystemDictionary printSpaceDifferences for differential results (very useful).
Fixed a bug that cause MNU doOneCycle when returning to MVC after morphic error.
Fixed a bug that caused a crash if interrupt an expression evaluated in the debugger."!
Optimizes ChangeSorter updates for faster window switching.
Fixes 'browseItHere' (Ctrl-B) in Morphic and adds token auto-select.
Fixes ChangeSorters to not show a method after forgetting.
Fixes 'find' (Cmd-f) in Morphic.
Adds a new creation message to PolygonMorph. Try it out with...
World addMorph: (PolygonMorph
shapeFromPen: [:p | p hilbert: 4 side: 7; go: 7.
p hilbert: 4 side: 7; go: 7]
color: Color red borderWidth: 1 borderColor: Color black).
Adds a new method, Form>>anyShapeFill, that does a slow but sure
job of filling shapes, as opposed to convexShapeFill:.
Adds the menu item 'proper fill'/'quick fill' to polygons (and curves).
Any selection past the end of text now selects the end, not the character above.
A text ending with CR now ends with a selectable null line.
Second select on end of text selects the entire text as we are accustomed.
AutoScrolling of text now works properly. However the old problem of
mouseOver actions interferes if you drag over another scrollPane.
Restored the 90-degree detents in flex rotations that got lost in the big merge.
Fixed the cursor offset in compatibility menus to be near the first selection.
Fixed a bug that prevented error corrections from being seen immediately.
Made all links to a project disappear when the project gets deleted.
(orphaned links used to cause crashes).
Fixed a bug that introduced boldface when typing or paste caused a line break.
Morphic inspectors now respond to cmd-i to inspect the currently selected field.
Morphic inspectors no longer care if their eval pane is dirty.
Morphic ChangeLists can now be accepted when clean, as in MVC.
Defines WorldMorph>>sleep, and calls it prior to project switches. The sleep process recursively releases all cached state in all morphs of the world, and compresses all image forms.
Reinstates big painting buffer, by increasing the reasonablePaintingExtent to something unreasonably large. Later, we might still use the earlier mechanism in low-space situations, perhaps.
Reworks the top-level Morphic display strategy to reduce repaint rectangles by any occlusions in the (fairly common) case that the reduced region is another simple rectangle. This results in a significant improvement for large overlapping windows. It is most noticeable when picking up a window to drag when there are a lot of windows underneath.
The strategy is NOT generalized to all levels because the management overhead seems inappropriate for many complex morphic structures.
The old protocol
<Morph> drawOnFills: <Rectangle>
^ true iff I am opaque throughout the rectangle
has been supplanted by
<Morph> areasRemainingToFill: <Rectangle>
^ the rectangle areasOutside: my opaque region
Also fixes a performance bug in expanding collapsed windows, with dramatic results.
Also makes BookPageThumbnailMorphs keep their pages compressed to save space.
Fixes colorUnder access to the World's background color.
Makes colorUnder immune to huge coordinates.
Makes method revert update properly in MVC and Morphic MessageSets.
Restores access to the shifted menu in codePanes -- many removals!!
Unifies normal and shift menu access in lists and text -- more removals.
Uses selectWord for browseReferencesToIt.
Fixes long-standing selection bug in morphic paste (by menu).
VM support code and image code for asynchronous
file primitives, which allow reading and writing data to a file
in parallel with other activities. See the class AsyncFile.
This facility is still experimental, and is currently only
supported on the Macintosh; it may be withdrawn or replaced
in a future release.
Numerous little fixes and improvements:
a. support for driving JoystickMorphs from real joysticks
b. menus for starting infections, etc in BouncingAtomsMorph
c. reset button color when acting on buttonDown
d. temporary fix for st-st-stuttering sound on BookMorph page transitions
e. added 'timeToRun' method to BlockContext for convenient timing
f. eliminate obsolete mouseEnter/mouseLeave protocol (new versions take an argument)
A simple piano-roll view of a score that updates itself incrementally
as the score plays. Try the 'Piano Roll' button the the ScorePlayerMorph.
(1) The button offered is now compatible with the tile-scripting system.
(2) Next and prev buttons of the dynamic sort (i.e., buttons that control whichever book they find themselves in at the moment) are available, and are grouped with the BookMorph.
(3) A configurable Random tile is added.
(4) Three other tiles are offered, one for arithmetic, two for comparisons
Fixes the bug in BasicButton associated with use of raised border
Enables invocation of text pane menus by option-click in morphic.
Andreas's fixes to Inpector an CompiledMethod
This change set should fix most of the crashes during simulation
by using a guard primitive which is installed in all method that
cannot possibly be simulated.
CodeWarrior 8 project archives for building the Mac virtual machine.
Helps me do this update process.