feat(M8): FR-T4/T5/T6/W2/W6/W7 标签页/布局接线——固定标签悬停浮现关闭按钮(T4); tab-store updateScroll+restore恢复滚动位置(T5); tabbarVisible接线App+TitleBar切换按钮(T6/W6); winIsMaximized IPC+最大化/还原图标切换(W2); 极简模式隐藏TabBar(W7); layout-tabs E2E 3 项
This commit is contained in:
@@ -9,6 +9,7 @@ interface TabState {
|
||||
closeTab: (id: string) => void;
|
||||
setActive: (id: string) => void;
|
||||
togglePin: (id: string) => void;
|
||||
updateScroll: (id: string, scrollTop: number) => void; // FR-T5:保存滚动位置
|
||||
closeAll: () => void; // FR-V6: 切库时清空全部标签页
|
||||
renamePath: (oldPath: string, newPath: string) => void; // FR-T7: 重命名/移动后同步标签页路径
|
||||
activePath: () => string | null;
|
||||
@@ -46,6 +47,11 @@ export const useTabs = create<TabState>((set, get) => ({
|
||||
|
||||
setActive: (id) => { set({ activeId: id }); get().persist(); },
|
||||
|
||||
// FR-T5:更新标签页滚动位置(不触发 persist,避免频繁写入)
|
||||
updateScroll: (id, scrollTop) => {
|
||||
set(s => ({ tabs: s.tabs.map(t => t.id === id ? { ...t, scrollTop } : t) }));
|
||||
},
|
||||
|
||||
togglePin: (id) => {
|
||||
set(s => {
|
||||
const tabs = s.tabs.map(t => t.id === id ? { ...t, pinned: !t.pinned } : t);
|
||||
|
||||
Reference in New Issue
Block a user