From ec0b6768be721aadc2cd3a167551b5fba628e1fe Mon Sep 17 00:00:00 2001 From: Abeautifulsnow Date: Thu, 27 Aug 2026 22:23:13 +0800 Subject: [PATCH] feat(grid): add row/column crosshair highlight setting --- .../editor/EditorSettingsDialog.vue | 16 ++ apps/desktop/src/components/grid/DataGrid.vue | 55 ++++++ apps/desktop/src/i18n/locales/en.ts | 2 + apps/desktop/src/i18n/locales/es.ts | 2 + apps/desktop/src/i18n/locales/it.ts | 2 + apps/desktop/src/i18n/locales/ja.ts | 2 + apps/desktop/src/i18n/locales/ko.ts | 2 + apps/desktop/src/i18n/locales/pt-BR.ts | 2 + apps/desktop/src/i18n/locales/zh-CN.ts | 2 + apps/desktop/src/i18n/locales/zh-TW.ts | 2 + .../dataGrid/crosshairHighlight.spec.ts | 174 ++++++++++++++++++ .../dataGrid/dataGridPaintTheme.spec.ts | 74 +++++++- .../lib/dataGrid/canvasDataGridRenderer.ts | 22 +++ .../src/lib/dataGrid/crosshairHighlight.ts | 81 ++++++++ .../src/lib/dataGrid/dataGridPaintTheme.ts | 22 ++- .../src/lib/settings/editorSettingsDraft.ts | 1 + .../stores/__tests__/settingsStore.spec.ts | 33 ++++ apps/desktop/src/stores/settingsStore.ts | 4 + 18 files changed, 496 insertions(+), 2 deletions(-) create mode 100644 apps/desktop/src/lib/__tests__/dataGrid/crosshairHighlight.spec.ts create mode 100644 apps/desktop/src/lib/dataGrid/crosshairHighlight.ts diff --git a/apps/desktop/src/components/editor/EditorSettingsDialog.vue b/apps/desktop/src/components/editor/EditorSettingsDialog.vue index 6e578c3fee..5923fbca5f 100644 --- a/apps/desktop/src/components/editor/EditorSettingsDialog.vue +++ b/apps/desktop/src/components/editor/EditorSettingsDialog.vue @@ -415,6 +415,7 @@ const dataGridFilterViewPreviewExpanded = ref(true); const editDataGridTextFilterPanelHeight = ref(settingsStore.editorSettings.dataGridTextFilterPanelHeight); const editDataGridAutoTransposeSingleRow = ref(settingsStore.editorSettings.dataGridAutoTransposeSingleRow); const editDataGridCellDetailButtonVisible = ref(settingsStore.editorSettings.dataGridCellDetailButtonVisible); +const editDataGridCrosshairHighlight = ref(settingsStore.editorSettings.dataGridCrosshairHighlight); const editPageSize = ref(settingsStore.editorSettings.pageSize); const editTableOpenPageSize = ref(settingsStore.editorSettings.tableOpenPageSize); const editQueryResultMaxRowsEnabled = ref(settingsStore.editorSettings.queryResultMaxRowsEnabled); @@ -607,6 +608,7 @@ function currentEditorSettingsDraft(): EditorSettingsDraft { dataGridTextFilterPanelHeight: editDataGridTextFilterPanelHeight.value, dataGridAutoTransposeSingleRow: editDataGridAutoTransposeSingleRow.value, dataGridCellDetailButtonVisible: editDataGridCellDetailButtonVisible.value, + dataGridCrosshairHighlight: editDataGridCrosshairHighlight.value, flatteningMultiLineText: editFlatteningMultiLineText.value, pageSize: editPageSize.value, tableOpenPageSize: editTableOpenPageSize.value, @@ -871,6 +873,7 @@ function syncEditorSettingsDraftFromStore() { editDataGridTextFilterPanelHeight.value = settingsStore.editorSettings.dataGridTextFilterPanelHeight; editDataGridAutoTransposeSingleRow.value = settingsStore.editorSettings.dataGridAutoTransposeSingleRow; editDataGridCellDetailButtonVisible.value = settingsStore.editorSettings.dataGridCellDetailButtonVisible; + editDataGridCrosshairHighlight.value = settingsStore.editorSettings.dataGridCrosshairHighlight; editFlatteningMultiLineText.value = settingsStore.editorSettings.flatteningMultiLineText; editPageSize.value = settingsStore.editorSettings.pageSize; editTableOpenPageSize.value = settingsStore.editorSettings.tableOpenPageSize; @@ -1170,6 +1173,7 @@ function resetDefaultsForTab(tab: SettingsCategory) { editDataGridTextFilterPanelHeight.value = DEFAULT_EDITOR_SETTINGS.dataGridTextFilterPanelHeight; editDataGridAutoTransposeSingleRow.value = DEFAULT_EDITOR_SETTINGS.dataGridAutoTransposeSingleRow; editDataGridCellDetailButtonVisible.value = DEFAULT_EDITOR_SETTINGS.dataGridCellDetailButtonVisible; + editDataGridCrosshairHighlight.value = DEFAULT_EDITOR_SETTINGS.dataGridCrosshairHighlight; editFlatteningMultiLineText.value = DEFAULT_EDITOR_SETTINGS.flatteningMultiLineText; editPageSize.value = DEFAULT_EDITOR_SETTINGS.pageSize; editTableOpenPageSize.value = DEFAULT_EDITOR_SETTINGS.tableOpenPageSize; @@ -1252,6 +1256,7 @@ function resetAllDefaults() { editDataGridTextFilterPanelHeight.value = DEFAULT_EDITOR_SETTINGS.dataGridTextFilterPanelHeight; editDataGridAutoTransposeSingleRow.value = DEFAULT_EDITOR_SETTINGS.dataGridAutoTransposeSingleRow; editDataGridCellDetailButtonVisible.value = DEFAULT_EDITOR_SETTINGS.dataGridCellDetailButtonVisible; + editDataGridCrosshairHighlight.value = DEFAULT_EDITOR_SETTINGS.dataGridCrosshairHighlight; editFlatteningMultiLineText.value = DEFAULT_EDITOR_SETTINGS.flatteningMultiLineText; editPageSize.value = DEFAULT_EDITOR_SETTINGS.pageSize; editTableOpenPageSize.value = DEFAULT_EDITOR_SETTINGS.tableOpenPageSize; @@ -5509,6 +5514,17 @@ onUnmounted(() => { +
+
+ +

+ {{ t("settings.dataGridCrosshairHighlightDescription") }} +

+
+ +