#
#	File:		TextServicesMgr Release Notes
#
#	Contains:	xxx put contents here xxx
#
#	Written by:	Kenny S. Tung and friends.
#
#	Copyright:	© 1992 by Apple Computer, Inc., all rights reserved.
#
#	Change History (most recent first):
#
#		<49>	  8/5/92	KST		Added comments for the last change.
#		<21>	 6/11/92	KST		Added a warning message for the last change.
#
#

TextServicesMgr Release Notes
First created on: 4/20/92 6:47:55 PM

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

4/20/92 6:48:09 PM

File: TSMInternalUtils.c,17
Owner: Yosuke Kurita     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1026761

> Release notes for this change:

Before calling InsertMenu and DrawMenuBar, make sure that the menu handle is not NIL.
Avoid HUnlocking for the disposed handle.
Release note for TSMFunctions.c was not checked in becuse of an error.

> What was tested:

Shaio Chen’s tool, which used to crash, does not crash with this fix.
----------------------------------------------------------•----------------------------------------------------------
5/1/92 9:17:39 AM

File: TSMInternalUtils.c,19
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1028881

> Release notes for this change:

If open IM for SWM’s document, set the zone to system zone so that the Component instance will not get closed when the application exits.

> What was tested:

If you quit any non-TSM aware app using KIM, KIM’s instance got closed. Now it does not get closed.

----------------------------------------------------------•----------------------------------------------------------
5/1/92 11:19:25 AM

File: TSMDispatch.a,30
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,34
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1028301

> Release notes for this change:

Since we changed SWM to a driver, RestoreTSMDialogState, TSMChangeCursor, TSMRestoreCursor calls are no longer needed and should be removed from the source code.

> What was tested:

Design change.

----------------------------------------------------------•----------------------------------------------------------
5/1/92 8:48:38 PM

File: TSMPrivate.a,21
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫Asm∫

File: TSMPrivate.h,30
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫C∫

File: TSMDispatch.a,31
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMFunctions.c,36
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1027482

> Release notes for this change:

If the mouse is over a floating window and input method changed cursor on it , then don’t let other application such as Finder to change the cursor again. (Patched _SetCursor). However, IM has to set the cursor as well when it puts out a dialog. Otherwise, Finder will change it to a watch.

> What was tested:

Cursor used to flash between IM’s and Finder’s over a floating window. Now it doesn’t.

----------------------------------------------------------•----------------------------------------------------------
5/2/92 4:53:23 PM

File: TSMDispatch.a,32
Owner: Yosuke Kurita     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: 

> Release notes for this change:

Fix <31>.  Flush the parameter on the stack before return to a caller.

> What was tested:

Track code with MacsBug.
----------------------------------------------------------•----------------------------------------------------------
5/4/92 3:35:15 PM

File: TSMDispatch.a,33
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1025252

> Release notes for this change:

Patched _PaintBehind. AfterDark redraws the screen with FrontWindow(), and Grayrgn. This however,	does not draw input method’s floating windows. This patch will paint from IM layer if	theWindow = frontwindow, and theRegion = GrayRgn.

> What was tested:

Both “AfterDark” and “Pyro” are working with floating windows now.

----------------------------------------------------------•----------------------------------------------------------
5/6/92 10:10:53 AM

File: TSMFunctions.c,37
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,35
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1028642

> Release notes for this change:

When switch from a TSM document using Akiko to another TSM document using Roman script. Akiko’s pallete is still visible. Need to do some special checking when we activate the second document in non-CJK script.

> What was tested:

I tried switch from DOC1 (with Akiko) to DOC2 (use Roman), Akiko’s pallete got taken down now.

----------------------------------------------------------•----------------------------------------------------------
5/13/92 4:47:47 PM

File: TSMUtility.c,37
Owner: John Harvey     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: 

> Release notes for this change:

To change NewServiceWindow so that we set windowKind to identify whether a floating
window belongs to an application or to the system.  We use the new window kinds
applicationFloatKind(6) and systemServiceKind(7).  If an application opens a floating
window it needs to pass kCurrentProcess as the ComponentInstance parameter.  When this
happens the windowKind gets set to applicationFloatKind.  If the caller of new service
window is anything other than kCurrentProcess the windowKind is set to systemFloatKind.

> What was tested:

Build the system tested the current input methods.
----------------------------------------------------------•----------------------------------------------------------
5/14/92 6:59:19 PM

File: TSMPrivate.a,22
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫Asm∫

File: TSMPrivate.h,31
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫C∫

File: TSMDispatch.a,34
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1025797

> Release notes for this change:

Balloon help does not work when mouse is over a floating window. It is even worse when the help is in Finder because the Balloon window falshes. Now we check if the mouse is over our floating window, we’ll open the resource file from the owner of the window and try to get the Help resource from there. (Each floating window has a Component instance in the refCon which created the window). If resource file is not open, then we use a default string provided in Balloon.r.

> What was tested:

I tested with Akiko, KIM, and my Chinese IM which has Help resource. They all work in Finder and TeachText.

----------------------------------------------------------•----------------------------------------------------------
5/18/92 3:54:28 PM

File: TextServices.a,25
Owner: Kenny S. Tung     
Project: MainProj∫Interfaces∫AIncludes∫

File: TextServices.h,43
Owner: Kenny S. Tung     
Project: MainProj∫Interfaces∫CIncludes∫

File: TSMFunctions.c,38
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1029814

> Release notes for this change:

NewTSMDocument didn’t check if supported type is the right type. Now it will check the
number of interface type and check if the type is ‘tsvc’, if not it will return
‘tsmUnsupportedTypeErr’. Also added ‘tsmUnsupportedTypeErr’ in TextServicesMgr.[ah].

> What was tested:

Tested with TSMTest tool TCS #4 and #6.
----------------------------------------------------------•----------------------------------------------------------
5/19/92 5:17:54 PM

File: TSMPrivate.h,32
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫C∫

File: TSMInternalUtils.c,21
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,38
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1029247

> Release notes for this change:

GetDefaultInputMethod, SetDefaultInputMethod, and SetTextServiceLanguage routines should
check if user is passing the correct language code corresponding to the script code. If
it is wrong, these calls return paramErr.

> What was tested:

Tested with TSM Test.
----------------------------------------------------------•----------------------------------------------------------
5/20/92 12:43:23 PM

File: TSMUtility.c,39
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1030422

> Release notes for this change:

If we switch from SJip to KIM, and then to Akiko. Since the use old JIM flag is still set
for Japanese script, Akiko did not get activated. Changed SetDefaultInputMethod to
special check for this case. If the flag is true, I’ll do the following:
1. Set script flag to false,
2. Set the use_old_JIM flag to false,
3. Update the system resource file.


> What was tested:

Tested the input methods switching sequence SJip -> KIM -> Akiko, or SJip -> Roman ->
Akiko.
They all work fine.
----------------------------------------------------------•----------------------------------------------------------
5/20/92 1:59:37 PM

File: TSMDispatch.a,35
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1030447

> Release notes for this change:

A boolean passed in by C compiler is 4 bytes !! When xUseInputWindow
calls this routine and pass us the Boolean flag, I used MOVE.B to get the flag, which got
garbage from the stack.

> What was tested:

Tested with Richard’s tool. work great.
----------------------------------------------------------•----------------------------------------------------------
6/2/92 7:32:56 PM

File: TSMDispatch.a,36
Owner: John Harvey     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMFunctions.c,39
Owner: John Harvey     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMInternalUtils.c,23
Owner: John Harvey     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,41
Owner: John Harvey     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1028635,1030481,1030631,1030634,1030647

> Release notes for this change:

Fixed bunch of Menu placement and drawing bugs by making input method menu system menus.

Added a routine to add input method windows to the system menu by the standard method of
inserting into the menulist and system menulist, calling MBDF, and finally calling
InvalMenuBar (TSMInternalUtils.c)
Changed TSMFunctions to call the above routine when dealing with a new input method menu.
TSMDispatch was changed to have the SystemMenu patch
Changed FindServiceWindow in TSMUtility to fix a crashing bug discovered while working on
this (basically FindWindow crashes if MenuList is NIL) so before we call FindWindow we
check the menulist.

> What was tested:

Built TSMInit, loaded it with New Akiko, rebooted, the menu comes up with an icon (purple
pencil), and the menu works (used it to select Akiko help window).
----------------------------------------------------------•----------------------------------------------------------
6/4/92 1:37:40 PM

File: TSMInternalUtils.c,25
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1031578

> Release notes for this change:

Input method’s menu showed up in the system menu when in a Roman script. We changed
utDeleteMenu to make sure the menu is deleted from the system menu list if the system
script does not use input method.

> What was tested:

Tried with Akiko in Roman system, the problem is gone.
----------------------------------------------------------•----------------------------------------------------------
6/4/92 7:20:04 PM

File: TSMDispatch.a,39
Owner: John Harvey     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1031574

> Release notes for this change:

The HMGetBalloonPatch was leaving the old help window up when menus were pulled down when
a floating text service window was open.

To fix this we changed HMGetBalloonPatch to check the window part code for inSysWindow
and inMenuBar, as well as inDesk.  If it is inSysWindow, inMenuBar or inDesk, we return
the correct result for HMGetBalloon (i.e. the real result returned by the real trap).
Formerly, we only returned the correct result when inDesk was returned.

> What was tested:

Built the system ran the new system with help on and Akiko windows open.  It doesn’t
leave the old balloon up anymore.
----------------------------------------------------------•----------------------------------------------------------
6/10/92 11:13:21 AM

File: TSMUtility.c,42
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1031634

> Release notes for this change:

We patched HMGetBalloon to call FindServiceWindow for supporting
floating window. FindWindow will call MBDF when the mouse is pressed
However, MBDF will call HMGetBalloon when Help is on and the mouse
is pressed in the menu bar, HMGetBalloon will call MBDF because of
our patch. The MBDF code lock the menulist handle on entry, but
unlock it on exit. So after the HMGetBalloon call, the handle is not
locked but MBDF keeps a dereferenced pointer, and ..... system will
eventually crash. The fix is to save the handle state before and
restore it after the FindWindow call.

> What was tested:

We traced in debugger. Before the fix, the handle was not locked after the
FindServiceWindow call. After the fix, now it remained locked.
----------------------------------------------------------•----------------------------------------------------------
6/10/92 2:49:57 PM

File: TSMPrivate.a,24
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫Asm∫

File: TSMPrivate.h,35
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫C∫

File: TSMDispatch.a,40
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMFunctions.c,40
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMInternalUtils.c,26
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,43
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1031142,1030881, 1030646

> Release notes for this change:

Since we removed the docID param from TSMEvent, UseInputWindow for individual document
has been broken because keydown event is routed to SWM recursively. Fix it with a TSM
global keeping track of which doc is using the input window and added a new private call
-- TSMEventFromSWM. With this new call, TSM can avoid sending events to IM when a TSM
aware application is using the Input Window. Changed many routines in TSM to keep the
state information correct.

> What was tested:

I have conducted a very thorough test with the help from Margarita S. and Shiao-Chen T.
and a test tool from John H. It is working well.

> •• Warning:	This change requires a new SWM driver. To use this version of TSM, 
  ••			you need WorldScript II A18 or later.
----------------------------------------------------------•----------------------------------------------------------
6/10/92 3:32:58 PM

File: TSMDispatch.a,41
Owner: Yosuke Kurita     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,44
Owner: Yosuke Kurita     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1031298

> Release notes for this change:

If the default input method is the old-Japanese input method, GetDefaultInputMethod
returns it even if it has not been loaded.   Fixed this.

> What was tested:

Built LinkedPatch.  Put Input methods, and take out the default one.  It doesn’t crash.
----------------------------------------------------------•----------------------------------------------------------
6/13/92 5:51:13 PM

File: TSMPrivate.h,36
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫C∫

File: TSMInternalUtils.c,27
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1032463

> Release notes for this change:

Added a new routine -- utDeleteSysMenu to remove the menu from the system menulist, so
that it will not show up in other application’s menu bar. The menu is not removed from
the current application’s menulist. So it always stays with the application. Useful when
switch from a TSM aware application to Finder, we need to keep the pencil in that app’s
menu but we don’t want to see it when we launch other applications. Called by
‘utSuspendResumeApp’.

> What was tested:

Tested with Kadokawa with use input window ON, the Akiko’s pencil does not show up when
launch TeachText anymore.
----------------------------------------------------------•----------------------------------------------------------
6/14/92 2:44:40 PM

File: TSMFunctions.c,41
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,46
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1032466

> Release notes for this change:

Fixed the bug when running a TSM aware application in Roman primary script, select SJip
and then Akiko, Akiko is not activated.

> What was tested:

I tried switch from Roman to SJip and then to Akiko, it works.
----------------------------------------------------------•----------------------------------------------------------
6/16/92 3:54:03 PM

File: TSMInternalUtils.c,31
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1032645

> Release notes for this change:

(Roman primary) In a TSM aware application, turn UseInputWindow ON, select a script which
has no input method, turn UseInputWindow OFF, change to Akiko, Select another App’s
window. Althou we have Akiko’s icon but there is no pencil and can’t type in Japanese.
Fixed in TSMInternalUtils.c.

> What was tested:

Tested with newKadokawa and TeachText. It works great.
----------------------------------------------------------•----------------------------------------------------------
6/17/92 11:13:09 AM

File: TSMPrivate.a,26
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫Asm∫

File: TSMPrivate.h,39
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫C∫

File: TSMDispatch.a,44
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMInternalUtils.c,32
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,47
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1030843

> Release notes for this change:

Balloon help in SWM’s popup menu did get cleared. The problem is because when the mouse
is over a floating window, HMGetBalloon return false. We patched PopUpMenuSelect to set a
flag so that HMGetBalloon can check and return the correct info when the mouse is over a
floating window.

> What was tested:

Tested with SWM and other popup menus, it works ok now.
----------------------------------------------------------•----------------------------------------------------------
6/17/92 11:33:58 AM

File: TSMFunctions.c,44
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1032643

> Release notes for this change:

1.  Boot up Cube-E b5 base and a18 WS II, Akiko, Sjip, and Korea from any system.
2.  Launch “NewKadokawa”.
3.  Select “Akiko” from the KEYBOARDS menu.
4.  Close the document window.
5.  Go back to the Finder.
6.  Go back to NewKadokawa.  Notice that the “Pencil” menu will appear.

> What was tested:

Tested with the newKadokawa. It works now.
----------------------------------------------------------•----------------------------------------------------------
6/17/92 1:24:15 PM

File: TextServices.h,45
Owner: Kenny S. Tung     
Project: MainProj∫Interfaces∫CIncludes∫

File: TSMFunctions.c,45
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1032783

> Release notes for this change:

TSMDocument refcon can not be retrieved correctly.
This is because TSM is storing TSMDocument refcon in keyDirectObject parameter instead of
keyAETSMDocumen

> What was tested:

Changed to use keyAETSMDocumen in my code.
----------------------------------------------------------•----------------------------------------------------------
6/19/92 9:12:36 AM

File: TSMDispatch.a,45
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMInternalUtils.c,33
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1032492

> Release notes for this change:

When switching input methods within the same script, need to delete the previous menu and
then insert the new one. In the case when input method does not have a menu, need to make
sure no previous menu left over in the menu bar.

> What was tested:

I installed 3 more testing Korean input method in the system (running Korean as the
primary script). I can switch between them and see the correct menu displayed. When
switched to KIM, no menu displayed because KIM doesn’t have menu.
----------------------------------------------------------•----------------------------------------------------------
6/22/92 9:22:36 AM

File: TextServices.h,46
Owner: Kenny S. Tung     
Project: MainProj∫Interfaces∫CIncludes∫

File: TSMInternalUtils.c,34
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,49
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1030843

> Release notes for this change:

When the current active document is nil and we switch from old input method to TSM-styled
input method, need to reset the useOldJIM flag to flase. Added one new Apple Event
‘ShowHideInputWindow’ in TextServices.h header file.

> What was tested:

Tested with Kadokawa, switch from old to new input method works now.
----------------------------------------------------------•----------------------------------------------------------
6/22/92 12:56:34 PM

File: TSMInternalUtils.c,35
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1032492

> Release notes for this change:

(For the #33 fix in TSMInternalUtils.c) When switching input methods, we need to remove
the old input method’s menu from the system menulist I was using the wrong routine, I
should use ‘utDeleteInputMethodsPreviousMenu’, not ‘utDeleteMenu’.

> What was tested:

Coding error.
----------------------------------------------------------•----------------------------------------------------------
6/22/92 6:50:55 PM

File: TSMDispatch.a,46
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1033280,1033495

> Release notes for this change:

The bus error occurs in PACK 14 (Help manager) after the _FrontWindow routine has
returned a null for the front window. This is because I only checked inDesk for the part
code returned from FindServiceWindow, I really should check inSysWindow, and inMenu too.
If the mouse is over the menu, Help Manager thinks it is over a floating window. Fixed in
TSMDispatch.a.

> What was tested:

Homi tested with the TSMInit I built, and it is not crashing anymore.
----------------------------------------------------------•----------------------------------------------------------
6/24/92 10:54:56 AM

File: TSMInternalUtils.c,36
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1033456

> Release notes for this change:

When CloseTSMAwareApplication() is called, I need to call utDeleteCleanUpTSMDocument().
Defined the routine in this file. Also when we close an input method, we better take down
its pallete too.

> What was tested:

Shiao-Chen tested with her tool and said the problem is fixed.
----------------------------------------------------------•----------------------------------------------------------
6/26/92 12:18:14 PM

File: TSMPrivate.a,28
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫Asm∫

File: TSMPrivate.h,40
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫C∫

File: TSMDispatch.a,47
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMFunctions.c,48
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMInternalUtils.c,37
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,50
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1033450,1033456,1031316

> Release notes for this change:

This fixed 3 major probelms involving:
1. After openning any dialog window in a TSM aware application which has no open window
will cause Akiko to crash if you click in its pallete. The bug is due to TSM activate the
input method when a new document is created. This deactivates any active Akiko’s instance
(a feature that I never knew). But the crashing part is actually a bug in Akiko.
2. CloseTSMAwareApplication did not call Process Manager with InlineAware(false).
3. Click the menu and move the mouse quickly over a floating window, sometimes the
Balloon is not cleaned up. The HMGetBalloon should return true if it is called inside of
MenuSelect().


> What was tested:

All the cases are tested and they are happenning any more.
----------------------------------------------------------•----------------------------------------------------------
6/26/92 4:46:00 PM

File: TSMDispatch.a,48
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1031142

> Release notes for this change:

When the application claims not TSM aware any more, we need to clear all UseInputWindow
flags so it will not be reused when another TSM aware app is launched.

> What was tested:

We launch Kadokawa after quitting it with UseInputWindow global flag on and it is not
using input window now.
----------------------------------------------------------•----------------------------------------------------------
6/30/92 6:12:20 PM

File: TSMUtility.c,52
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1030903,1033475

> Release notes for this change:

We had the agreement with the keyboard menu code that TSM will call SetScript(false) in
SetDefaultInputMethod(). So I am making the change to do the right thing.

> What was tested:

We used to have the bug that old and new Japanese input method were not synchronized
correctly. Now it works.
----------------------------------------------------------•----------------------------------------------------------
7/1/92 9:38:55 PM

File: ThingManager.c,11     
Owner: John Harvey     
Project: MainProj∫Toolbox∫ComponentMgr∫

File: TSMInternalUtils.c,38     
Owner: John Harvey     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1033507,1033505

> Release notes for this change:

We put a check into the ThingManager.c that would refuse to open a component if the slop
in the system heap was too low.  However, I forgot that Bruce Leak told me that the
thingmanager is super smart and clever and will put things into app heaps when system
memory is too low.  That meant that in certain situations components that should have
been opened in the app heap weren’t being allowed to open because of lack of space in the
system heap.

So to fix this we moved the system heap check into TSM.  Since input method’s are
notorious memory hogs and also have to be opened in the system heap we check for system
heap slop after opening one of them.  If there isn’t enough space we close the input
method.

> What was tested:

Ran the component test tools saw the attempt to open a component in the system heap fail,
and then watched that component get opened in the application heap.
----------------------------------------------------------•----------------------------------------------------------
7/2/92 2:19:32 PM

File: TSMInternalUtils.c,39
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1034430

> Release notes for this change:

When handling input methods, in some cases I forgot to check if the script is one of
CCJK. If it is not we should not call utGetScriptIndex() because later on when accessing
the array, we’ll write to memory that does not belong to us and trashes the heap.

> What was tested:

Tested with kadokawa and the problem is gone.
----------------------------------------------------------•----------------------------------------------------------
7/6/92 9:29:10 AM

File: TSMFunctions.c,50
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMInternalUtils.c,40
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,53
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1033507,1033505

> Release notes for this change:

1. For the fix 38 in TSMInternalUtils.c, when we close the instance, need to call
HidePalleteWindows().
2. Don’t change the tsmScript/Language if utOpenIM4Document() failed. Need to put up a
notification to warn the user (the later is not done yet, waiting for the bug to get
approved).
3. Clear the kIMJustSetCursor bit before the SetTextServiceCursor() call so that IM can
change cursor from inside of the current input area.

> What was tested:

HidePalleteWindows() call is a noop if input method does not have pallete. Tested in low
memory condition for case 2. Tested with Akiko for case 3.
----------------------------------------------------------•----------------------------------------------------------
7/8/92 3:57:17 PM

File: TSMFunctions.c,51     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMInternalUtils.c,41     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,54     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1033475

> Release notes for this change:

1. In SetTextServiceLanguage(), when we activate an input method, make sure we are not
using old JIM. If we are, don’t activate the TSM-styled Input Method.
2. Changed the routine name utHasNoInputMethod() to utScriptIsNotCCJK() to be more
descriptive.
3. If we can’t open input method because there is no IM, then don’t restore old state
info. KeyBoard menu will change the script ignoring our error code.

> What was tested:

Tested with Akiko and SJip, the pallete doesn’t show up now. We took out the ChineseIM
and switch from Akiko to Chinese, or from KIM to Chinese, they all seem to work well.
----------------------------------------------------------•----------------------------------------------------------
7/9/92 12:00:44 PM

File: TSMFunctions.c,52     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1035067

> Release notes for this change:

When there is no TSM document in a TSM aware application, we call UseInputWindow(nil,
true). But that fix did not check re-entrant case. So this bug happens. The fix is to
check the flag, if it is already set, then we know we have been called again and just
return.

> What was tested:

Tested with Kida-san’s new Kadokawa and the problem goes away.
----------------------------------------------------------•----------------------------------------------------------
7/13/92 3:55:59 PM

File: TSMFunctions.c,53     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1035594

> Release notes for this change:

In xActivateTSMDocument(), I assumed when a TSM aware application calls
ActivateTSMDocument(), the other document has been deactivated (as the ERS said). This is
apparently not a wise assumption because application writer could be as dumb as me and
will make mistake. (Like the one they do to produce this bug).

> What was tested:

Tested with Kadokawa and cannot reproduce the bug anymore.
----------------------------------------------------------•----------------------------------------------------------
7/16/92 7:11:27 PM

File: TSMPrivate.a,30     
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫Asm∫

File: TSMPrivate.h,43     
Owner: Kenny S. Tung     
Project: MainProj∫Internal∫C∫

File: TSMDispatch.a,51     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMFunctions.c,54     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1034952

> Release notes for this change:

A cursor can not be set in SetTextServiceCursor TSM component call.
Fixed this problem in SetCursorPatch by checking if we’re inside of the TSMEvent() call.
If we are, then let the SetCursor call thru.

> What was tested:

Press the mouse and Akiko changes the cursor in the inline hole.
----------------------------------------------------------•----------------------------------------------------------
7/22/92 8:23:13 PM

File: TSMInternalUtils.c,42     
Owner: John Harvey     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1031828

> Release notes for this change:

On Rubiks when tsmFinder launches a application they deactivate the Finder’s
TSMDocuments.  Then if a non-TSM aware calls InitMenus and then calls GetNextEvent, SWM
will activate its document when it gets the accRun call from the system (as a result of
the GetNextEvent call).  When the swm document is activated TSM will insert the input
methods menu in the menulist.  The trouble with this is that if there are no menus in the
list (i.e. InitMenus was called but no insertMenu yet), the FEP menu will be the only
system menu in the menulist.  This apparently prevents the other system menus from being
added.  So the eventual result is a menubar with the application menus and one silly
looking pencil hanging out on the right end. We fixed this by checking to see if there
are any menus in the menulist before we insert the FEP menu.  Change is in
utCreateSystemVersionOfMenu.

> What was tested:

Ran EGBridge on Rubiks with an init that contained the change.  We didn’t have the pencil
hanging out.
----------------------------------------------------------•----------------------------------------------------------
7/27/92 9:09:32 AM

File: TSMDispatch.a,53     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,55     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1037539

> Release notes for this change:

When I do a _DisposWindow on the large, obscuring window, I crash under 7.1b4.
The problem is caused by the _PaintBehind patch. It calls GetFrontServiceWindow() before
the Process Manager is initialized.

> What was tested:

In MacBugs I see it is doing the right thing.
----------------------------------------------------------•----------------------------------------------------------
7/31/92 9:33:02 AM

File: TSMInternalUtils.c,43
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1037798

> Release notes for this change:

Fixed a memory leak bug in utCleanUpPreviousDoc(). The check and disposeHandle call
should be executed outside of the if statement.

> What was tested:

Watched the code executed in the MacsBug.
----------------------------------------------------------•----------------------------------------------------------
7/31/92 11:10:42 PM

File: TSMInternalUtils.c,44
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,56
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1038311

> Release notes for this change:

We can’t call application to fix input area when script changes (ie., Cmd-space) because
the SetTextServiceLanguage() call is issued inside of the GetOSEventPatch of the Script
Manager code. When we are running inside of GetOSEvent(), the A5 points to Process
Manager’s global. If we call FixTSMDocument(), input method will send Apple Event to the
application, and very bad things could happen when the application accesses its globals.

> What was tested:

The TSMChat used to crash because of this problem, now it doesn’t.
----------------------------------------------------------•----------------------------------------------------------
8/4/92 3:11:13 PM

File: ScriptMgrKeyGetSet.a,50     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫ScriptMgr∫

File: TSMInternalUtils.c,45     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

File: TSMUtility.c,59     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1038311

> Release notes for this change:

<Hani A.>: Undo the previous fix and now set up application’s a5 in KeyScript() routine.
Also clear the menu handle kept in TSM global when the last instance is closed.

> What was tested:

The previous fix does not call FixTSMDocument(), now it does. You can see it with a TSM
aware application. Also TSMChat does not crash with this fix.
----------------------------------------------------------•----------------------------------------------------------
8/4/92 8:42:47 PM

File: TSMInternalUtils.c,47     
Owner: Kenny S. Tung     
Project: MainProj∫Toolbox∫TextServicesMgr∫

Radar bug: #1038603, #1038606

> Release notes for this change:

System crashes when Akiko’s last instance is closed because the menu handle has been
disposed but TSM still keeps a copy in the global.
Fixed the problem in F1C4 by clearing the handle in the TSM global.

•• Note: However, the final wisdom on handling input method's menu handle is that
input method should NEVER dispose the menu even when the last instance is closed.
This is because multiple applications can be running each with a menu in the
application's menu list. If the input method disposes the menu while in one application,
it will leave its handle in other applications becomes dangling. There is no way to solve
this problem other than hold the menu handle once its been created. Input method should
keep the menu handle in Component's Refcon for reuse. (See Component Manager ERS for
details on using the Refcon).


> What was tested:

Kadokawa uses to crash with Akiko B7 when quit that application, now it works fine.
----------------------------------------------------------•----------------------------------------------------------
