diff --git a/packages/frontend/src/components/FileEditorContainer.vue b/packages/frontend/src/components/FileEditorContainer.vue index 5f5f3db..c06df91 100644 --- a/packages/frontend/src/components/FileEditorContainer.vue +++ b/packages/frontend/src/components/FileEditorContainer.vue @@ -18,7 +18,7 @@ const sessionStore = useSessionStore(); // +++ 实例化会话 Store +++ const settingsStore = useSettingsStore(); // +++ 实例化设置 Store +++ const appearanceStore = useAppearanceStore(); // +++ 实例化外观 Store +++ const { shareFileEditorTabsBoolean } = storeToRefs(settingsStore); // +++ 获取共享设置 +++ -const { currentEditorFontFamily } = storeToRefs(appearanceStore); // +++ 获取编辑器字体家族设置 +++ +const { currentEditorFontFamily, currentEditorFontSize } = storeToRefs(appearanceStore); // --- Props --- const props = defineProps({ @@ -214,6 +214,11 @@ const handleEditorScroll = ({ scrollTop, scrollLeft }: { scrollTop: number; scro } }; +// +++ 处理编辑器字体大小更新事件 +++ +const handleEditorFontSizeUpdate = (newSize: number) => { + appearanceStore.setEditorFontSize(newSize); +}; + // 注意:关闭/最小化按钮现在应该在 WorkspaceView 控制 Pane,而不是这里 // const handleCloseContainer = () => { ... }; @@ -350,9 +355,11 @@ const handleKeyDown = (event: KeyboardEvent) => { v-model="localEditorContent" :language="currentTabLanguage" :font-family="currentEditorFontFamily" + :font-size="currentEditorFontSize" theme="vs-dark" class="editor-instance" @request-save="handleSaveRequest" + @update:fontSize="handleEditorFontSizeUpdate" :initialScrollTop="activeTab?.scrollTop ?? 0" :initialScrollLeft="activeTab?.scrollLeft ?? 0" @update:scrollPosition="handleEditorScroll" diff --git a/packages/frontend/src/components/FileEditorOverlay.vue b/packages/frontend/src/components/FileEditorOverlay.vue index 3bd6f95..7c6f193 100644 --- a/packages/frontend/src/components/FileEditorOverlay.vue +++ b/packages/frontend/src/components/FileEditorOverlay.vue @@ -7,12 +7,14 @@ import FileEditorTabs from './FileEditorTabs.vue'; import { useFileEditorStore, type FileTab } from '../stores/fileEditor.store'; import { useSettingsStore } from '../stores/settings.store'; import { useSessionStore } from '../stores/session.store'; +import { useAppearanceStore } from '../stores/appearance.store'; const { t } = useI18n(); const fileEditorStore = useFileEditorStore(); const settingsStore = useSettingsStore(); const sessionStore = useSessionStore(); +const appearanceStore = useAppearanceStore(); // --- 本地状态控制弹窗显示 --- const isVisible = ref(false); @@ -34,6 +36,9 @@ const { // 设置 Store (用于判断模式) const { showPopupFileEditorBoolean, shareFileEditorTabsBoolean } = storeToRefs(settingsStore); +// 从 Appearance Store 获取编辑器字体大小 +const { currentEditorFontSize } = storeToRefs(appearanceStore); + // --- 从 Store 获取方法 --- // 全局 Store Actions (用于共享模式) const { @@ -411,6 +416,11 @@ const handleEditorScroll = ({ scrollTop, scrollLeft }: { scrollTop: number; scro } } }; + +// +++ 处理编辑器字体大小更新事件 +++ +const handleEditorFontSizeUpdate = (newSize: number) => { + appearanceStore.setEditorFontSize(newSize); +}; // 关闭弹窗 (保持不变) const handleCloseContainer = () => { @@ -572,7 +582,9 @@ onBeforeUnmount(() => { :language="currentTabLanguage" theme="vs-dark" class="editor-instance" + :font-size="currentEditorFontSize" @request-save="handleSaveRequest" + @update:fontSize="handleEditorFontSizeUpdate" :initialScrollTop="activeTab?.scrollTop ?? 0" :initialScrollLeft="activeTab?.scrollLeft ?? 0" @update:scrollPosition="handleEditorScroll" diff --git a/packages/frontend/src/components/MonacoEditor.vue b/packages/frontend/src/components/MonacoEditor.vue index 60494d8..dc93240 100644 --- a/packages/frontend/src/components/MonacoEditor.vue +++ b/packages/frontend/src/components/MonacoEditor.vue @@ -3,10 +3,10 @@