DIRECTORY TEditTouchup, Process USING [Ticks, MsecToTicks, SetTimeout], Rope USING [ROPE], TEditDocument USING [SpinAndLock, TEditDocumentData, Unlock]; TEditTouchupImpl: CEDAR MONITOR IMPORTS TEditDocument, Process EXPORTS TEditTouchup = BEGIN fullUpdate: PUBLIC REF ANY _ $Update; refresh: PUBLIC REF ANY _ $Refresh; RefreshOver: PUBLIC ENTRY PROC = { ENABLE UNWIND => NULL; BROADCAST refreshOver }; LockAfterScroll: PUBLIC PROC [tdd: TEditDocument.TEditDocumentData, who: Rope.ROPE] RETURNS [ok: BOOL] = { RETURN [LockAfter[tdd, who, TRUE]]; }; LockAfterRefresh: PUBLIC PROC [tdd: TEditDocument.TEditDocumentData, who: Rope.ROPE] RETURNS [ok: BOOL] = { RETURN [LockAfter[tdd, who, FALSE]]; }; LockAfter: PROC [tdd: TEditDocument.TEditDocumentData, who: Rope.ROPE, scroll: BOOL] RETURNS [ok: BOOL _ TRUE] = { [] _ TEditDocument.SpinAndLock[tdd, "LockAfterRefresh"]; SELECT TRUE FROM NOT tdd.dirty => ok _ TRUE; alwaysOK => ok _ TRUE; NOT scroll OR tdd.scroll=no => ok _ FALSE; ENDCASE => ok _ TRUE; IF NOT ok THEN TEditDocument.Unlock[tdd]; }; alwaysOK: BOOL _ FALSE; UnlockAfterRefresh: PUBLIC PROC [tdd: TEditDocument.TEditDocumentData] = { IF tdd#NIL THEN TEditDocument.Unlock[tdd]; }; refreshOver: CONDITION; aLittleWhile: Process.Ticks = Process.MsecToTicks[50]; maxCount: NAT _ 0; TRUSTED { Process.SetTimeout[@refreshOver, aLittleWhile]; }; END. ΜTEditTouchupImpl.mesa Copyright c 1985 by Xerox Corporation. All rights reserved. Paxton on May 23, 1983 11:27 am Maxwell, January 6, 1983 11:38 am Russ Atkinson (RRA) June 4, 1985 1:20:12 am PDT Κa˜codešœ™Kšœ Οmœ1™