Herewith a number of updates from December, mostly from SqC. I'm hoping now to resume the process of releasing 3.2 that got stalled for various reasons over the holidays.

My plan for the near term is...

1. Get all appropriate VM changes from Andreas and JohnMc
into the update stream.

2. Issue a version change to 3.3alpha.

3. Prepare to release 3.2 by doing all the normal cleanups
and issuing an image for test. If there's anything
badly wrong, we can put it out in the 3.2 update
stream, and we can re-post an updated image any
time we feel the need.

4. Press on with 3.3, meaning...
Issue Henrik's modules
Issue Joshua's bounds changes (so they don't get stale).
Encourage the harvesters to bring us up to date

So the idea is basically to wrap up 3.2, and press on with 3.3. Hopefully by front-loading most major changes early in the cycle, 3.3 will reach a stable state well before we feel the need for another release.

- Dan

4600ViaSUnit-3-tk – Ted Kaehler – 10 December 2001
Bug exhibited by a GeeMailMorph. If you choose 'make scrollbar inboard', and then later choose 'make scrollbar retractable', it gets recursive errors, and you have to leave Squeak.
The problem is that the scrollbar's owner is not nilled, and Morph>>privateAddMorph:atIndex: can't find it in the submorphs. My fix bulletproofs privateAddMorph:atIndex:.
Also corrected the root problem by nilling the owner of the scrollbar when it is made retractable.
The recent menu keys addition got a error if no menu existed. Just put in a check for nil in the right place."

4601minorly-sw – Scott Wallace – 11 December 2001Titles for slot-info menus in viewers now (again) show the slot-name rather than the getter.: Makes it possible for any of the anticipated individual-category-defining methods to be missing when Morph class #additionsToViewerCategories is run. This circumvents a recurring and annoying method-ordering problem."

4602stackFeatures-sw – Scott Wallace – 11 December 2001
Adds five new commands to the black-dot menu for a Stack. The primary intent here is to ease the importing of external data into a Squeak 'Stack':'add cards from clipboard' - Provides a mechanism for importing records from tab- and return-delimited strings such as can be obtained from word processors, spreadsheets, etc.. The data are expected to be one card's worth per line, with the data order on each line being exactly the same as the order of the instance variables in the cardPlayer, and with values for successive fields being separated by tabs, and with return characters demarcating the lines. To get the instance variables of your card to correspond in the correct order with the data you are importing, you might need to use the next command:: 'change inst var order' - Provides a ui for rearranging the order of instance variables in the uniclass of a stack.'be defaults for new cards' - A one-touch UI for making the current values seen on a card become the defaults for their respective fields in new instances: 'sort cards by...' Lets you sort the cards in the stack on any single sort key.
'delete all cards except this one' - Allows you quickly to cleanse a stack of unwanted cruft."

4604baseGraphic-sw – Scott Wallace – 12 December 2001
Makes a SketchMorph keep track of a 'baseGraphic' – normally its original picture, but settable by the user. Support is provided via new items in the #graphics category of the Viewer and new items in a Sketch's halo menu for reverting to the baseGraphic and for changing what the baseGraphic is."

4605outOfUES-sw – Scott Wallace – 12 December 2001
Caution: standalone and plugin images require different versions of this.
Two items inspired by recent activity at UES
(1) Because of intractable performance problems, the isOverColor test is made unavailable. This REALLY slowed things down in a Viewer open to the tests category.
(2) Makes the do-it receiver in a textual scriptor be the same as the 'self' referred to in the code; thus, one can evaluate Smalltalk expressions inside a scriptor and have the right 'self' pertain."

4606LessFullGCs-ar – Andreas Raab – 12 December 2001
Remove the need for garbage collections in two cases.
Case #1: File operations required (possibly full) garbage collections on certain operations. These are unneeded if the file registry does not contain a file with the same name. In this case, the failure to perform the operation cannot be due to a dangling file handle and thus we don't need a GC.
Case #2: Socket creation required a full GC if the creation failed. This can only happen if the number of open sockets is above a critical threshold (and therefore exceed OS resources) and some sockets are dangling (and could be used to free up resources). A registry threshold can prevent execution of a full GC until we have at least a certain number of sockets open.

4607tileFixes-sw – Scott Wallace – 13 December 2001
A host of bug fixes relating to 'classic' tile-scripting. Some of these bugs have been with us for quite a long time! Makes color:sees: not fail if the object being tested is not in the world.Fixes the long-standing bug that had invited certain spurious and error-producing drops (which would always eventually lead to trouble,) into CompoundTileMorphs.: Fixes the long-standing bug that had often made Scriptor panes not open up a tall-enough space for phrases they are inviting in – most conspicuously seen in a TEST pane, when the value being dragged over has just been grabbed from a Viewer.Fixes the long-standing bug that could make a TEST pane sometimes not accept the drop of a perfectly reasonable boolean-valued phrase.: Fixes a bug revealed in update 4604: the position adjustment when setting a new form into a SketchMorph was not taking flexing into account. The result was that the flex could be broken (i.e. flexee no longer had its position in local coords) and things would not come right until you picked the object up.Fixes the long-standing bug that a coerced-to-boolean slot retrieval in a TEST pane, if subsequently removed and then dropped on the desktop, would spawn a new scriptor around it.: Temporarily reverts the handling of action-when-mouse-is-up imparted by 4572DragVsClick to ScriptEdtiorMorph.step, which was producing a serious problem in newly-launched CompoundTileMorphs.
Adds some limited interoperatbility between plugin and standard images regarding types in TilePadMorph, eliminating a kind of horrible problem that could be seen when loading an etoy project created under the plugin-in into a standard image and then trying to do some further tile editing in it."

4608DropZonesFix-ar – Andreas Raab – 14 December 2001
Fixes a problem with tracking the drop zones in eToys which resulted from ScriptEditors running the tracking code when they appeared in the world. The problem wasn't seen before the drag vs. click update because the step method turned itself of after some time. The changes make tracking the drop zones a separate stepping method which is turned on and off independently from the 'main' step method.

4609ColoredStencil-ar – Andreas Raab – 14 December 2001
Fixes a problem when using stenciling on color forms. Found when attempting to add a drop shadow to the trash can."

1: Use BorderedStringMorph for the label rather than NameStringInHalo.

2: Use the name of the quad defining the object when it is launched. As an example, the 'Picture' in the parts bin used to come up in the world as 'Image'. Now consistency with the parts bin description is enforced.

3: Make objects in parts bins bottom-center aligned to have all the labels at the same height.

4613PartsBinButtons-ar – Andreas Raab – 15 December 2001
The change set makes all elements in parts bins 'real' buttons, by adding mouse feedback. This change is experimental - if you don't like it take out the #buttonSetup call and look at the post script to see how the existing setup might be removed.
Also, because items in the parts bin are now real buttons, they act on mouse UP. This behavior is intentional - while some people might now be used to dragging objects out of parts bins almost every 'normal' user will be most surprised by this behavior if the object looks and feels like a button."

4614TextAndFonts-ar – Andreas Raab – 17 December 2001
Various improvements for text: Alignment can now be set for each paragraph in a text individually (e.g., the text style does no longer dominate the alignment for the entire document).Fonts can now be set for each character individually (e.g., the text style does no longer dominate the font for the entire document).: Morphs can be anchored either #inline (behaving like characters) or #paragraph (relative to the enclosing paragraph) or #document (relative to the enclosing document). The anchoring scheme can be set for each morph individually.
Needless to say, this CS contains a bunch of major fixes and modifications to the character scanner classes - which means that some old things might be broken."

4616MIDIStoreWAV-jm – Mark Guzdial and John Maloney – 16 December 2001
Implements ScorePlayer>duration so that you can store a MIDI score to
a WAV file. Here's an example:
score _ MIDIFileReader scoreFromFileNamed: 'riff.mid'.
player _ ScorePlayer onScore: score.
player storeWAVOnFileNamed: 'riff.wav'.
Mark did the first version, John made it work for MIDI files
containing tempo changes.

4617soundSaving-jm – John Maloney – 16 December 2001
Juan Manuel introduced storeWAVOnFileNamed:, which allowed
any sound, including a MIDI ScorePlayer to be stored as WAV
audio file. This changeset extends that facility to allow saving
sounds as AIFF or Sun audio files as well. In addition, several
optimizations were added:
1. SampledSounds and LoopedSampledSounds store their
sample buffers directly when possible
2. writes sound buffers directly to a filestream in the
appropriate endianness
Menu commands allow one to store audio files in any of these
formats from a ScorePlayerMorph.
Note: It is a little quicker to store WAV files on Windows
and AIFF files on Macs, since that avoids a byte reversal.

4622kbdFocus-sw – Scott Wallace – 17 December 2001
Provides variant calls to various menu functions so that the seizing of keyboard focus can be avoided when necessary, such as when asserting text-style changes via a halo menu"

4624sampleForms-raa – Bob Arning – 18 December 2001
Adds a sample thumbnail for EToySenderMorph so that it does not cause network initialization when rebuilding the objects tool (or flaps??). Image provided is one-half normal size to save space."

4625Postscript-tk – Ted Kaehler – 12 December 2001
Postscript printing knew nothing about installing the card-specific morphs of a StackMorph before printing each page.
Also, extended ^m to handle the case when people write (aa max:bb) with no space after the colon.
Ensure that changes in a project being loaded do not go into the current changeSet.
Ensure that 'file into new changeSet' always goes back to the old changeSet, even if there is an error, or the user aborts a Bumper. This holds for updating from the server also.
When getting a Fancy Number Watcher from the Master Parts Bin, and placing it in the background of a stack, don't get an error. (Let it be OK to be unnamed and have no variable.)
Name the three kinds of number tiles and their parts appropriately. Recognise those names as 'generic' and not specifically named by the user. By default they will not have card specific values until the user renames them.
Method for StackMorph to add tab delimited cards from a file.
Repair a bug in Find... in a StackMorph when it is invoked with Cmd-f.
Feedback when no match is found, or when then only instance is the one already selected."

4628Stationary2-ar – Andreas Raab – 17 December 2001
As per Kim's request this version is the new default."

4629insertCardsEtc-sw – Scott Wallace – 18 December 2001
Adds an item to the stack menu for loading cards from a file.
Makes the facilities for adding cards from the clipboard and from a file share the same code."

4630miscIssues-sw – Scott Wallace – 18 December 2001
A few minor things...Fixes the bug that could generate an error when a vocabulary initialization was issued while in an mvc project (per Tim Rowledge bug report): Stops noting the creation of a new change set in the transcript. (per Tim Rowledge complaint)Removes an annoying 'nothing changed' informer.: Reformats Craig's PasteUpMorph.viewBox:, whose formatting had become somehow mangled, as per Mike Rutenberg recommendation.
Fixes the bug that appeared when you tried to return from an mvc project to a morphic project that had a menu open in it"

4633JPEGUpdates-jmv – Juan Manuel Vuletich – 21 December 2001
Note: These changes include a change to the primitive interface.
You will need to update your JPEGReadWriter2Plugin after filing
in these changes.
This changeset combines several sets of updates to JPEGReadWriter2
and it's plugin. In addition to changes from Juan Manuel Vuletich,
it includes some fixes from Yoshiki Ohshima, some tweaks to make
the C compiler happy from John McIntosh, and entry points allowing
one to specify the quality and progression flag parameters when
creating a JPEG from Robert Hirschfeld.
New plugin features from Juan Manuel:
Avoids generating Color transparent instead of Color black.
Adds optional dithering when decompressing into a 16bit form.
Includes the C support code files needed in addition to JPEG Lib.
Includes several minor fixes and enhancements."

4634JPEGTweak-jm – John Maloney – 22 December 2001
Fixes a bug in the plugin that caused a primitive failure when compressing.
Minor cleanup of JPEGReadWriter2 class>putForm:quality:progressiveJPEG:onFileNamed:."

4640GraphicsTweaks-ar – Andreas Raab – 31 December 2001
Various changes to graphics in Morphic: The CS cleans up most of the simple string drawing and measuring methods. Rather than using DisplayScanner's #quickPrint: variants the font is queried directly which is more obvious, more general, and even faster (drawing strings through canvases is now roughly twice as fast as before; measuring string sizes is about five times faster).The canvas' #text:... methods have been renamed to #drawString:... to make the intent more clear.: An issue with overly optimistic clipping in Canvases has been fixed.Methods for image warping based on some transformation have been added to canvas (the #warpImage family of methods).: An old issue with HandMorph leading to gribblies has finally been fixed.
Morph>position: has been modified to send #layoutChanged to its owner - when a morph is moved the owner's layout needs to be recomputed.

4643DebugLayouts-ar – Andreas Raab – 1 January 2002
The CS makes it simpler to debug layout problems. If an error is encountered during layout computation the fullBounds will be stored with the receiver's bounds before the error is passed on.
The scheme will work unless the bounds of the morph in question are screwed up (but then you're in deep trouble anyways).
Note that the new scheme will compute the fullBounds correctly even if the exception is handled outside the exception handler established in #fullBounds."

4644StringMorphFont – Andreas Raab – 6 January 2002
Allow for changing the font of StringMorphs and their emphasis. The CS also adds StrikeFontfromUser and the ability to invoke Morphic menus modal without having to resort to MVCMenuMorphs etc."

4645WorldRedraw-ar – Andreas Raab – 6 January 2002
The change set fixes a non-apparent problem with DamageRecorder's policy for handling invalidated regions. Under various circumstances the damage recorder would hold overlapping and even otherwise completely covered rectangles which led to repeated redraw operations of one and the same morph. The behavior was observed in a case where redrawing the full morph took roughly 100ms whereas the morphic redraw cycle took roughly 250ms - caused exclusively by overlapping damage rectangles.
This change set fixes the issue in the world's redraw cycle rather than in the damage recorder. The reasoning is that alot of damage may be reported so the recording code needs to be kept fast. Redrawing the world on the other hand is done exactly once per cycle so we may well spent a few cycles to re-order the damage rects to be unique and non-overlapping.
In addition, the change set optimized the process of corner rounding significantly for damage regions which do not overlap an entire morph. Before these changes, the rounder would perform its operation on all corners - even those where we know beforehand that they are not visible at all.

4646showTilesFix-rhi – Robert Hirschfeld – 4 January 2002
There was a typo in CodeHolder>>showTiles: that wasn't detected by the compiler since the instance variable named 'contents' masked the symbol #contents to be used in the change notification."
Date: Tue, 5 Feb 2002 10:03:29 -0800
From: Dan Ingalls
Subject: [updates] 48 for 3.2gamma – please test
To: squeak-dev@lists.squeakfoundation.org

Folks -

Thanks to the Harvesters and especially to Scott, I have just posted 48 updates across from 3.3alpha to 3.2gamma. This is pretty much what we would like to freeze by the end of the week so, for those of you who want a tight 3.2 release, please bang it around and see if it breaks.