mirror of
https://github.com/dream-num/univer.git
synced 2026-10-02 04:24:34 +08:00
fix(engine-render): repaint text during incremental scrolling (#7563)
This commit is contained in:
+33
@@ -45,6 +45,7 @@ import { Canvas } from '../../../canvas';
|
||||
import { Engine } from '../../../engine';
|
||||
import { MAIN_VIEW_PORT_KEY, Scene } from '../../../scene';
|
||||
import { Viewport } from '../../../viewport';
|
||||
import { Font } from '../extensions/font';
|
||||
import { SHEET_VIEWPORT_KEY } from '../interfaces';
|
||||
import {
|
||||
convertTransformToOffsetX,
|
||||
@@ -709,6 +710,38 @@ describe('spreadsheet integration', () => {
|
||||
noSkeletonSpreadsheet.dispose();
|
||||
});
|
||||
|
||||
it('repaints text across the cleared incremental scroll bound', () => {
|
||||
const { spreadsheet, skeleton, scene, cacheCanvas, mainCanvas } = fixture;
|
||||
const context = mainCanvas.getContext();
|
||||
const viewportInfo = createViewportInfo(scene, cacheCanvas, {
|
||||
diffBounds: [createBound(46, 28, 118, 52)],
|
||||
diffX: 0,
|
||||
diffY: 24,
|
||||
isDirty: 0,
|
||||
isForceDirty: false,
|
||||
});
|
||||
|
||||
skeleton.setStylesCache(createViewportInfo(scene, cacheCanvas));
|
||||
const fontExtension = new Font();
|
||||
spreadsheet.register(fontExtension);
|
||||
Reflect.set(spreadsheet, '_fontExtension', fontExtension);
|
||||
Reflect.set(skeleton, '_incrementalFontRenderRanges', [{
|
||||
startRow: 10,
|
||||
endRow: 10,
|
||||
startColumn: 0,
|
||||
endColumn: 0,
|
||||
}]);
|
||||
Reflect.set(spreadsheet, '_refreshIncrementalState', true);
|
||||
const renderFontSpy = vi.spyOn(
|
||||
fontExtension as unknown as { _renderFontEachCell: (...args: unknown[]) => void },
|
||||
'_renderFontEachCell'
|
||||
);
|
||||
|
||||
spreadsheet.draw(context, viewportInfo);
|
||||
|
||||
expect(renderFontSpy.mock.calls.some(([, row, column]) => row === 0 && column === 0)).toBe(true);
|
||||
});
|
||||
|
||||
it('skips merge gridline cleanup during merge-free drawing', () => {
|
||||
const { spreadsheet, skeleton, scene, cacheCanvas, mainCanvas } = fixture;
|
||||
const context = mainCanvas.getContext() as any;
|
||||
|
||||
@@ -383,9 +383,6 @@ export class Spreadsheet extends SheetComponent {
|
||||
extension.draw(ctx, parentScale, spreadsheetSkeleton, extensionDiffRanges, {
|
||||
viewRanges: extensionViewRanges,
|
||||
checkOutOfViewBound: true,
|
||||
fontRenderRanges: extension === this._fontExtension && !isMergeRepair
|
||||
? spreadsheetSkeleton.incrementalFontRenderRanges
|
||||
: undefined,
|
||||
hasMergeData,
|
||||
viewportKey: viewportInfo.viewportKey,
|
||||
viewBound: viewportInfo.cacheBound,
|
||||
|
||||
Reference in New Issue
Block a user