FramePresentationDamage class sealed

Damage data normalized for surface presenters.

Sealed for ONE invariant that flags could not hold: a full repaint always dirties every row. That pairing used to be restated by hand at every construction site, and this type is exported host SPI, so the fourth site was never going to be one of ours. PresentationFullRepaint has no rows to pass — the plan expands them — so the mismatch cannot be written.

What that does and does not protect. FramePresentationPlan.dirtyRows drives the wire's dirty-row hint and semantic coverage, so a full repaint declaring partial rows used to desync a peer mirror or throw out of coverage. Which rows a DOM surface actually paints comes from dirtyRowModels, which this type has no say over — though the variant does reach the DOM indirectly, since FramePresentationPlan.fullRepaint gates its scroll path.

The carve deliberately differs from the loop-level TuiFrameDamage it is built from. There, dirtyBounds being absent MEANS "nothing changed", so the variants discriminate on it. Here a bound is an optional hint that the wire simply does not carry — a remote frame has real dirty rows and no bounds — so bounds stay nullable INSIDE the changed variant and the rows are the authority. Copying the upstream shape literally would have made "changed, rows known, bounds unknown" inexpressible.

Implementers

Properties

dirtyBounds → CellRect?
A bound a diffing presenter may restrict itself to, when one is known.
no setter
hashCode → int
The hash code for this object.
no setterinherited
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited

Methods

noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
inherited