Update Terminal.vue
This commit is contained in:
@@ -70,6 +70,17 @@ const fitAndEmitResizeNow = (term: Terminal) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// 创建防抖版的字体大小保存函数
|
||||||
|
const debouncedSetTerminalFontSize = debounce(async (size: number) => {
|
||||||
|
try {
|
||||||
|
await appearanceStore.setTerminalFontSize(size);
|
||||||
|
console.log(`[Terminal ${props.sessionId}] Debounced font size saved: ${size}`);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`[Terminal ${props.sessionId}] Debounced font size save failed:`, error);
|
||||||
|
// Optionally show an error to the user
|
||||||
|
}
|
||||||
|
}, 500); // 500ms 防抖延迟,可以调整
|
||||||
|
|
||||||
// 初始化终端
|
// 初始化终端
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
if (terminalRef.value) {
|
if (terminalRef.value) {
|
||||||
@@ -262,10 +273,14 @@ onMounted(() => {
|
|||||||
// 向下滚动,减小字体
|
// 向下滚动,减小字体
|
||||||
newSize = Math.max((terminal.options.fontSize ?? currentTerminalFontSize.value) - 1, 8); // 使用当前实例值或 store 值作为基础
|
newSize = Math.max((terminal.options.fontSize ?? currentTerminalFontSize.value) - 1, 8); // 使用当前实例值或 store 值作为基础
|
||||||
}
|
}
|
||||||
|
// 立即更新视觉效果
|
||||||
terminal.options.fontSize = newSize;
|
terminal.options.fontSize = newSize;
|
||||||
// 调整终端大小以适应新的字体大小
|
|
||||||
fitAddon?.fit();
|
fitAddon?.fit();
|
||||||
emit('resize', { cols: terminal.cols, rows: terminal.rows });
|
// 注意:fit() 内部可能不会触发 resize 事件,如果需要精确通知后端,可能需要额外处理,但 fitAndEmitResizeNow 应该足够
|
||||||
|
// emit('resize', { cols: terminal.cols, rows: terminal.rows }); // 避免重复发送 resize
|
||||||
|
|
||||||
|
// 调用防抖函数来保存设置
|
||||||
|
debouncedSetTerminalFontSize(newSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user