feat(grid): support custom result grid font
This commit is contained in:
1 parent
bd81c8f52e
commit
ae7c368c4a
15 files changed
+163
-32
No files matched your search
@@ -1785,9 +1785,10 @@ function scrollToColumnIndex(columnIndex: number) {
|
||||
|
||||
// --- Column resize composable ---
|
||||
const columnWidthDensity = computed(() => settingsStore.editorSettings.columnWidthDensity);
|
||||
const tableFontFamily = computed(() => settingsStore.editorSettings.tableFontFamily);
|
||||
const columnWidthCacheKey = computed(() => props.cacheKey?.trim() || undefined);
|
||||
const columnStructureSignature = computed(() => createDataGridColumnStructureSignature(props.result.columns, props.result.column_types));
|
||||
const columnHeaderMeasurementKey = computed(() => [tableFontSize.value, settingsStore.editorSettings.fontFamily]);
|
||||
const columnHeaderMeasurementKey = computed(() => [tableFontSize.value, tableFontFamily.value]);
|
||||
let columnHeaderMeasureContext: CanvasRenderingContext2D | null | undefined;
|
||||
|
||||
function measureColumnHeaderText(text: string): number | undefined {
|
||||
@@ -1795,8 +1796,7 @@ function measureColumnHeaderText(text: string): number | undefined {
|
||||
if (columnHeaderMeasureContext === undefined) columnHeaderMeasureContext = document.createElement("canvas").getContext("2d");
|
||||
if (!columnHeaderMeasureContext) return undefined;
|
||||
// Match the rendered semibold header font instead of estimating proportional glyphs by character count.
|
||||
const fontFamily = getComputedStyle(gridRef.value ?? document.body).fontFamily || "sans-serif";
|
||||
columnHeaderMeasureContext.font = `600 ${tableFontSize.value}px ${fontFamily}`;
|
||||
columnHeaderMeasureContext.font = `600 ${tableFontSize.value}px ${tableFontFamily.value}`;
|
||||
return Math.ceil(columnHeaderMeasureContext.measureText(text).width);
|
||||
}
|
||||
|
||||
@@ -1816,6 +1816,7 @@ const gridStyle = computed(() => ({
|
||||
"--header-total-w": dataGridHeaderContentWidth("var(--total-w)", gridScrollbarGutter.value),
|
||||
"--grid-scrollbar-gutter": `${gridScrollbarGutter.value}px`,
|
||||
[EDITOR_FONT_FAMILY_CSS_VAR]: settingsStore.editorSettings.fontFamily,
|
||||
"--dbx-data-grid-font-family": tableFontFamily.value,
|
||||
"--dbx-table-font-size": `${tableFontSize.value}px`,
|
||||
}));
|
||||
const gridHorizontalScrollLeft = ref(0);
|
||||
@@ -4384,7 +4385,7 @@ const canvasSurfaceWidth = computed(() => {
|
||||
if (vw <= 0) return total;
|
||||
return Math.min(vw, total);
|
||||
});
|
||||
const canvasRenderStyleKey = computed(() => `${settingsStore.editorSettings.theme}:${settingsStore.editorSettings.uiScale}:${canvasBackingPixelRatio.value}:${isDark.value}:${themePalette.value}:${settingsStore.editorSettings.fontFamily}:${tableFontSize.value}`);
|
||||
const canvasRenderStyleKey = computed(() => `${settingsStore.editorSettings.theme}:${settingsStore.editorSettings.uiScale}:${canvasBackingPixelRatio.value}:${isDark.value}:${themePalette.value}:${tableFontFamily.value}:${tableFontSize.value}`);
|
||||
const CANVAS_MOUSE_WHEEL_SCROLL_MULTIPLIER = 1.5;
|
||||
const CANVAS_TRACKPAD_DELTA_THRESHOLD = 40;
|
||||
let canvasPixelRatioMediaQuery: MediaQueryList | null = null;
|
||||
|
||||
Reference in new issue
Block a user