TextEdit Release Notes
First created on: 6/23/92 1:45:16 PM

----------------------------------------------------------•----------------------------------------------------------

6/23/92 1:45:25 PM

File: ScriptEqu.a,52
Owner: Susan M. Bartalo     
Project: MainProj∫Interfaces∫AIncludes∫

File: International.r,26
Owner: Susan M. Bartalo     
Project: MainProj∫Toolbox∫ScriptMgr∫

File: TextEdit.a,45
Owner: Susan M. Bartalo     
Project: MainProj∫Toolbox∫TextEdit∫

File: TextEditPatchIIciROM.a,46
Owner: Susan M. Bartalo     
Project: MainProj∫Toolbox∫TextEdit∫

Radar bug: #1029263

> Release notes for this change:

<csd> Now determining whether to synchronize the font and keyboard for unstyled text by
checking the script’s ‘itlb’ flags word. A new bit has been defined ‘smsfSynchUnstyledTE’; the 
default is 0 which means do not synchronize and 1 (obviously) means synchronize.  This allows
each script system to determine when they want to synchronize their keyboard and font, and it 
removes the special casing script knowledge from TextEdit.

The script systems that currently want to synchronize include:
Roman, Cyrillic, Arabic, Hebrew

The script systems that currently do NOT want to synchronize include:
Eastern European (Hungarian, Czechoslovakia, Poland), Thai, Japanese, Korean, Chinese, Korean


> What was tested:

Using TeachText and MacDraw 1.9.5, I tested if the keyboard synchronized to the font.  I modified 
the Roman and Hebrew ‘itlb’ to be set correctly (for synchronization) and then I tested on a system 
that included Roman, Hebrew, Thai and Japanese.  I made each of these the system script using 
ScriptSwitcher and the expected synchronization behavior was exhibited.


----------------------------------------------------------•----------------------------------------------------------
7/7/92 3:18:22 PM

File: TextEdit.a,46     
Owner: Peter Edberg     
Project: MainProj∫Toolbox∫TextEdit∫

File: TextEditPatchIIciROM.a,47     
Owner: Peter Edberg     
Project: MainProj∫Toolbox∫TextEdit∫

Radar bug: #1030684

> Release notes for this change:

TEGetPoint failed in unstyled multiline text if a R->L script was present because in this
case DoMeasure measured from the beginning of the text buffer, not the beginning of the
current line. The result returned by TEGetPoint for characters in lines after the first
would have the correct vertical coordinate, but the horizontal coordinate would be to the
right of the end of the line. This caused problems for the underline in the SWM window if
there were multiple lines in the window and Arabic or Hebrew were installed. This problem
also showed up with Yishai’s TEGetPoint test tool based on TESample.

Fixed DoMeasure to correctly measure from the beginning of the current line (same 3 line
fix in two different files)

> What was tested:

Created TEInit with fix; tested it in Cube-E b8 with WorldScript I a14 and WorldScript II
a20, with Japanese primary. Tested SWM, and also used Yishai’s TEGetPoint test tool;
problem fixed according to both tests.
----------------------------------------------------------•----------------------------------------------------------
7/8/92 1:07:01 AM

File: TextEdit.a,47     
Owner: Peter Edberg     
Project: MainProj∫Toolbox∫TextEdit∫

File: TextEditPatchIIciROM.a,48     
Owner: Peter Edberg     
Project: MainProj∫Toolbox∫TextEdit∫

Radar bug: #1035214

> Release notes for this change:

Styled TextEdit was crashing with R->L scripts when the number of style runs on a line
went beyond 10. One way to see this in PlayText was to type a line of Hebrew or Arabic
text with spaces, and then begin changing spaces to Roman (in a Roman font). Changing a
space would create 2 new style runs; after the fifth space or so, TextEdit would crash.

The TextEdit DoSearch routine allocates a handle for a format order array if the number
of style runs goes beyond 10, and sets a low-memory flag in ExpandMem to indicate that it
has done so. The handle is saved in its stack frame. However, some paths through DoSearch
do not exit through the routine that is supposed to check the flag, and if it is set,
dispose of the handle and clear the flag. This has two consequences: (1) the handle is
orphaned, and (2) the flag is not reset. Since the flag is not reset, subsequent TextEdit
calls will assume that a valid handle exists in their stack frame, even though one may
not have been allocated; if they try to do something with the handle (whose value will be
just be uninitialized garbage on the stack frame), they could crash.

For non-IIci-ROM CPUs, this was fixed by making DoSearch always exit through a routine
that disposes of the handle if the flag is set (and then clears the flag). For IIci ROMs,
the same fix would have required a large and risky patch. So, for IIci ROM CPUs, DoText
was changed to always clear the low-mem flag. This prevents the crash, but does not solve
the orphaned handle problem. Oh, well.

Many thanks to Chris Derossi and Hani Abdelazim for their debugging efforts.

> What was tested:

A TEinit containing this fix was tested on a IIci with Hebrew and a II with Arabic. Using
PlayText documents that previously could be used to cause the problem, we were not able
to cause it with the fixed version of TextEdit.
----------------------------------------------------------•----------------------------------------------------------
7/15/92 8:18:44 PM

File: ToolUtils.a,25     
Owner: Susan M. Bartalo     
Project: MainProj∫Interfaces∫AIncludes∫

File: TextEdit.h,22     
Owner: Susan M. Bartalo     
Project: MainProj∫Interfaces∫CIncludes∫

File: TextEdit.p,19     
Owner: Susan M. Bartalo     
Project: MainProj∫Interfaces∫PInterfaces∫

File: TextEditPriv.a,16     
Owner: Susan M. Bartalo     
Project: MainProj∫Internal∫Asm∫

File: TextEdit.a,49     
Owner: Susan M. Bartalo     
Project: MainProj∫Toolbox∫TextEdit∫

File: TextEditPatchIIciROM.a,50     
Owner: Susan M. Bartalo     
Project: MainProj∫Toolbox∫TextEdit∫

Radar bug: ##

> Release notes for this change:

Move DoText selectors from the private interface file TextEditPriv.a to the public
interface files so the whole darn world can use the selectors instead of hard-coded
constants! Renamed teMark to teHighlight and teLoc to teCaret.

> What was tested:

No testing necessary since just changed the names.
----------------------------------------------------------•----------------------------------------------------------
8/11/92 6:57:15 PM

File: TextEdit.a,50     
Owner: Susan M. Bartalo     
Project: MainProj∫Toolbox∫TextEdit∫

File: TextEditPatchIIciROM.a,51     
Owner: Susan M. Bartalo     
Project: MainProj∫Toolbox∫TextEdit∫

Radar bug: #1036481

> Release notes for this change:

Remove font and keyboard synchronization for Roman-only systems.  It’s unnecessary and it
slows down the system! (God only knows that TextEdit doesn’t need to be any slower!!!!)



> What was tested:

Used TeachText on a Roman-only system to backspace across some characters and made sure
that KeyScript and FlushEvents are not called.  This verifies that the keyboard layout is
not being changed to correspond to the font.  Also verified that these calls are still
made for a non-Roman primary script system so that font and keyboard synchronization are
still occurring.
----------------------------------------------------------•----------------------------------------------------------
