Returns sorted dirty viewport row indices since the last take, then clears.
List<int> takeDirtyRows() { final out = _dirtyRows.toList()..sort(); _dirtyRows.clear(); return out; }