[comp.sys.mac.hypercard] Official Programmer's Notes for HyperCard 1.2.2

dan@Apple.COM (Dan Allen) (12/03/88)

Apple recently released version 1.2.2 of HyperCard.  It is a maintenance 
release with a number of bug fixes, better support for foreign languages, and 
a few small enhancements.  All current HyperCard owners can obtain a free 
upgrade by bringing their original disk to an authorized Apple dealer.  In 
addition, the Berkeley Macintosh Users Group also is authorized to distribute 
this latest version to current HyperCard owners.  They can be contacted at:

     BMUG
     1442A Walnut Street #2
     Berkeley, CA  94709.


These notes contain information of interest to stack designers and programmers 
that are not covered in the general HyperCard Version 1.2.2 Release Notes 
stack.  Briefly, HyperCard 1.2.2 includes the following:

*    Improved support for display and printing of Japanese, Arabic and other
     non-Roman languages

*    Improvements in handling sound (in conjunction with Sound Manager fixes
     in System 6.0.2)

*    Overall improved robustness in low memory situations

*    Parameters returned by HyperCard's Find command have been enriched and
     are more accurate

*    A variety of bug fixes

NOTE:  Developers who plan to license and ship HyperCard with their products 
outside the United States should use version z1.2.2, which contains a special 
resource for handling non-U.S. date, currency and other number formats.  
Contact Apple Software Licensing for details on distributing HyperCard with 
third party products.

Enhancements:

------------------------------------------------------------------------------
***      Pasting fields with the Shift key down
------------------------------------------------------------------------------

If the Shift key is pressed while pasting a field,  HyperCard 1.2.2 will paste 
the field AND put the text of the copied or cut field into it.
Whether pasting a field into a card or background, text for the current card 
will be put into the pasted field.   Copying and pasting a field with the 
Shift key can be done in a HyperTalk handler as follows:

on mouseUp
  select cd fld 1
  doMenu "Copy Field"
  go next card
  type "V" with commandKey,shiftKey -- paste it with the shiftKey down
  choose browse tool
end mouseUp

NOTE:  The doMenu command cannot be used to shift-paste a field as it takes 
only one argument


------------------------------------------------------------------------------
***      Placing a Paint graphic while drawing
------------------------------------------------------------------------------

HyperCard 1.2.2  allows rectangles, ovals, and regular polygons be placed (by 
sliding them around the screen) while they are being created.

With the rectangle, round rectangle, oval, or regular polygon tool chosen the 
user drags the mouse to stretch out the shape.   Without releasing the mouse 
button,  pressing the Command key will stop stretching, and allow sliding the 
graphic. Releasing the Command key resumes stretching.

This capability is only available while the user is working with the painting 
tools, keyboard and mouse directly; it cannot be programmed in a HyperTalk 
handler.


------------------------------------------------------------------------------
***   Faster navigation
------------------------------------------------------------------------------

Going to the previous card for a specified background is faster.   For 
example:

on mouseUp
   go to previous card of bkgnd "Foo"
end mouseUp


------------------------------------------------------------------------------
Support for Foreign Languages:
------------------------------------------------------------------------------

***      Right justified and right-to-left text

HyperCard 1.2.2 correctly frames (draws the box around) text found by 
HyperCard's Find commands when text is left, center or right justified, and 
when operating in languages which read right-to-left.
Reset Paint will use right justification for Paint text if right-to-left text 
has been set by the Script Manager.  This restores the defaults to what would 
be expected on a Kanji, Arabic or Hebrew language system. 


***      Printing

HyperCard 1.2.2 will print Kanji characters in high quality mode on the 
ImageWriter II and ImageWriter LQ printers.
HyperCard 1.2.2 uses the default font set by the Script Manager for printing 
reports.   


------------------------------------------------------------------------------
Bug Fixes:
------------------------------------------------------------------------------

***      Behavior in low memory conditions

HyperCard 1.2.2 has a fix for the operating system Scrap Manager to help it 
when memory is running low.  When cutting or copying a HyperCard object or 
graphic under low memory conditions (i.e. as would be created by repeated 
copying and pasting on a 1 MB system),  HyperCard could sometimes receive a 
corrupted copy of the object when it was pasted by a user or HyperTalk 
handler.  This bad copy could cause the system to hang or corrupt the 
HyperCard stack being used.  This fix, along with several smaller ones, make 
HyperCard 1.2.2 much more robust when running on a 1 Megabyte Macintosh, or in 
a small partition under MultiFinder.


***   Appending Scripts

Sometimes when memory was running low the beginning of a stack script was lost 
when another handler attempted to append something to the end of the script.  
This has been fixed.


***      Sound on 1 Megabyte systems, Mac Plus and SE

System 6.0.2 fixed a number of small problems with recent releases of the 
Macintosh Sound Manager.  HyperCard 1.2.2 has a fix for gaining and releasing 
the sound channel which supports desk accessories, modal dialogs or other 
software that use sounds.  This eliminated known sound problems including 
system hangs and occasional clicks and pops on the Macintosh Plus and SE, and 
provides better handling of synthesized and digitized sounds in general.


***      The "Find" command

Getting parameters for a Find command is now fully implemented, so HyperCard 
1.2.2 returns more information when asked for "the params".  These 
improvements allow stack designers to intercept a Find command, examine it in 
detail, then modify, terminate, execute or override it inside a handler.
HyperCard 1.2.2 returns the string to be found with quotes (which can be 
important for conditional HyperTalk statements to multi-word searches), and 
also returns a complete field expression, instead of just "<field>". 
For example, if the command:
find whole "My Name" in bkgnd fld "Foo"
were intercepted by the handler:

on Find
   send the params to HyperCard
   if the result is empty then exit find
   lock screen   
   push card
   go to stack "server:Address"
   send the params to HyperCard  -- search in this stack too
   if the result is empty then exit find
   pop card  -- return to original stack
end Find

inquiring about "the params" would return the following literal results:

find whole My Name in <field> -- for version 1.2.1 and earlier
find whole "My Name" in bkgnd field 2 -- for version 1.2.2

NOTE:  If the Find command contains a field name (e.g. bkgnd fld "Foo"), 
HyperCard converts the name into the field number (e.g. bkgnd field 2).
  
A simpler command like:

find "My Name"

would return:

find 0 My Name -- for version 1.2.1 and earlier  
find normal "My Name" -- for version 1.2.2

NOTE:  In simple Find commands, version 1.2.2 returns "normal" in the second 
item (instead of "0"), indicating the Find command was not followed by 
modifiers like "whole" or "string".


***   Closing open fields at the start of a Find command

HyperCard now closes the currently open field (one where there is a flashing 
cursor) when a search is initiated via the Find command.  This should 
eliminate situations where Find would return an invalid result.


***      Sending the Choose message

In earlier versions, when the user clicked on a tool in the tool windoid, 
HyperCard did not send the Choose message.  Now it does.  This is useful when 
a designer wants to figure out which tool the user has chosen from the 
palette.  For example:

on choose what,whichTool
   if what is "tool" and whichTool is "7" then beep
     -- beep when the brush tool is chosen
   pass choose -- do it
end choose

NOTE:  The Choose message passes the word "tool" and a number, not a tool 
name.


***      Scrolling fields

The scrollbar is now updated after cutting or deleting text from a scrolling 
field, so the field can now be scrolled back to the top with the mouse after 
cutting or deleting text from the bottom . 
Text Arrows now update the scrollbar and scroll setting properly.  Previous 
versions did not update the scrollbar when text arrows were used to scroll up 
and down the field.


***      Painting tools with hidden pictures

If the picture is hidden you can no longer get "marching ants" by double-
clicking the selection tool.
If the picture is hidden you can no longer set an insertion point by choosing 
the text tool and clicking the mouse.


***      Typing in locked stacks

A bug in HyperCard 1.2.1  allowed users to type carriage returns into fields 
in a locked stack, even though the userModify property was set to false.  This 
has been fixed.


***      Working with custom FOND resources

A bug allowed a custom FOND attached to a stack to be purged, but a Font 
Manager global still referred to it.  This could corrupt HyperCard's heap; it 
has been fixed.


***      Font substitution with the ImageWriter LQ

If the 3x fonts for the ImageWriter LQ are available, HyperCard will now use 
them.



***      Going to other stacks while deleting a card

Earlier versions of HyperCard would result in an Unexpected Error #1250 or 
#1260 if a user (via a script) left the stack in a delete or openCard handler.  
This has been fixed.


***      Copying the selection

Earlier versions of HyperCard accidentally copied the entire text of a source 
container when a handler requested that the selection (highlighted text) be 
put after the contents of a destination container.  Version 1.2.2 fixes this.


***      the diskSpace

The diskSpace property now returns the correct available diskspace when it's 
more than 32 megabytes. 


***      Visual effects on "E-Machines" type large monitors

Visual effects now work with monitors which change low memory screen globals.  


***      Flush mouseUp event before sending the mouseUp message

When a button was clicked on and the message was sent prior to the event being 
removed from the queue, XCMDs were getting confused by the extra event.  This 
is fixed.  


***      Suspend/Resume

In some sublaunch situations where the user had to find the application with 
Standard File, a bug resulted in weird looking screens on return to HyperCard.  
This has been fixed.