DocumentChangeFeed

A document's changes, settled for the UI (opal-plan-edit-sessions §PES-3).

Inherits QObject

In the namespace construct::document. Declared in src/libs/libconstruct/construct/document/DocumentChangeFeed.hpp.

Detailed description

The model emits a signal at every change, and the code that computes state from it — the compiler, the expression manager, the proxy mirror — listens there, because what it computes is read at once. A listener that only presents state to the engineer listens here instead:

- Outside a hold, the feed settles once per event-loop turn, however many changes the turn made. - While an OPAL plan holds the document (ConstructOpExecutor::beginHold()), the feed settles only at the hold's end and at a barrier (settle()), so a plan of thirty steps refreshes the panels once.

A settle re-emits what changed with the model's own signal signatures, net and in a fixed order: removed, replaced (as removed then added), added, updated, the per-instance changes, then the flags, with sceneChanged() last. Moving a listener here is a change of the object it connects to. changesSettled() carries the whole set, after the re-emits.

The rule for an adopter: a listener that presents state uses the feed; a listener that computes state other code reads at once uses the model. Selection is not here: the engineer can select while a plan holds the document, and the highlight must follow at once.

In this section