TEditRefreshImpl.mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Russ Atkinson (RRA) July 2, 1985 10:46:00 am PDT
Michael Plass, March 29, 1985 5:49:45 pm PST
Doug Wyatt, March 3, 1985 6:41:47 pm PST
DIRECTORY
CedarProcess USING [SetPriority],
TEditRefresh,
MonitoredQueue USING [Create, MQ, Remove],
Process USING [Detach],
TEditDocument USING [GetViewerForRoot, SelectionId, TEditDocumentData],
TextNode USING [Ref],
TEditTouchup USING [refresh],
ViewerClasses USING [Viewer],
ViewerForkers USING [ForkPaint];
TEditRefreshImpl:
CEDAR
MONITOR
IMPORTS CedarProcess, MonitoredQueue, Process, TEditDocument, TEditTouchup, ViewerForkers
EXPORTS TEditRefresh
= BEGIN
dirtyDocs: PUBLIC MonitoredQueue.MQ ← MonitoredQueue.Create[];
Refresh:
PROC = {
CedarProcess.SetPriority[normal];
DO
WITH MonitoredQueue.Remove[dirtyDocs]
SELECT
FROM
doc: TextNode.Ref => {
viewer: ViewerClasses.Viewer ← TEditDocument.GetViewerForRoot[doc];
IF viewer #
NIL
THEN
WITH viewer.data
SELECT
FROM
tdd: TEditDocument.TEditDocumentData =>
FOR v: ViewerClasses.Viewer ← viewer, v.link
WHILE v #
NIL
DO
IF
NOT v.iconic
AND
NOT v.destroyed
THEN
ViewerForkers.ForkPaint[v, client, FALSE, TEditTouchup.refresh, TRUE];
IF v.link = viewer THEN EXIT;
ENDLOOP;
ENDCASE;
};
ENDCASE;
ENDLOOP;
};
ScrollToEndOfDoc:
PUBLIC
PROC [viewer: ViewerClasses.Viewer, glitch:
BOOL] = {
WITH viewer.data
SELECT
FROM
tdd: TEditDocument.TEditDocumentData => {
tdd.scroll ← endofdoc;
tdd.scrollGlitch ← glitch;
};
ENDCASE;
};
ScrollToEndOfSel:
PUBLIC
PROC [viewer: ViewerClasses.Viewer, glitch:
BOOL, id: TEditDocument.SelectionId ← primary] = {
WITH viewer.data
SELECT
FROM
tdd: TEditDocument.TEditDocumentData => {
tdd.scroll ← endofsel;
tdd.scrollGlitch ← glitch;
tdd.scrollSelectionId ← id;
};
ENDCASE;
};
TRUSTED {Process.Detach[FORK Refresh[]]};
END.