⚡ perf(vscode): 预览切走标签页时页面留着,切回来不再重新生成、重发文档和整份重画
This commit is contained in:
1 parent
53283808a0
commit
5426c50cd9
8 files changed
+118
-59
No files matched your search
@@ -9,7 +9,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
|
||||
import { App } from './App'
|
||||
import { createViewStateStore } from './viewState'
|
||||
|
||||
/** 扩展端那头:页面发出去的消息、页面挂着的收消息回调,以及 webview 自己存的状态(标签页切回来页面重新加载时还在) */
|
||||
/** 扩展端那头:页面发出去的消息、页面挂着的收消息回调,以及 webview 自己存的状态(页面重新加载时还在) */
|
||||
const host = vi.hoisted(() => ({
|
||||
posted: [] as unknown[],
|
||||
listeners: new Set<(msg: unknown) => void>(),
|
||||
@@ -99,7 +99,7 @@ afterEach(async () => {
|
||||
vi.unstubAllGlobals()
|
||||
})
|
||||
|
||||
describe('标签页切走再切回来,调用树弹框照旧开着', () => {
|
||||
describe('页面重新加载后,调用树弹框照旧开着', () => {
|
||||
it('弹框开着、选了第二个入口:页面重新加载拿到文档后重新打开那块、要它的树,停回第二个入口;关掉后再加载就不开了', async () => {
|
||||
await load()
|
||||
await deliver(documentOf(3, [block('0', 'mask_phone')]))
|
||||
@@ -127,7 +127,7 @@ describe('标签页切走再切回来,调用树弹框照旧开着', () => {
|
||||
expect(host.posted).not.toContainEqual(expect.objectContaining({ type: 'openCallTree' }))
|
||||
})
|
||||
|
||||
it('页面重新加载前切走、文档还没到又切走一次,记着的弹框还在', async () => {
|
||||
it('重新加载后文档还没到,页面又重新加载了一次:记着的弹框还在', async () => {
|
||||
saved = { editing: [], folds: {}, callTree: { anchor: 'mask_phone', entry: 1 } }
|
||||
await load()
|
||||
await unload()
|
||||
|
||||
@@ -50,7 +50,7 @@ function record(reportedLine: { current: number | undefined }): void {
|
||||
|
||||
/**
|
||||
* 记住并恢复预览看到的位置:
|
||||
* ① 滚动时把视口顶部那块记进 webview 状态,页面因标签页切走被重新加载后照着滚回去;
|
||||
* ① 滚动时把视口顶部那块记进 webview 状态,页面重新加载后(VS Code 重启后恢复标签页、webview 进程崩了重建)照着滚回去;
|
||||
* ② 同时把那块的起始行报给扩展端,切回文本编辑器时把这行放到顶部。
|
||||
* 第一份文档带 reveal(刚从文本编辑器切过来、跳到定义)时不恢复,交给 useReveal 滚。
|
||||
*/
|
||||
|
||||
@@ -2,7 +2,7 @@ import type { ScrollAnchor } from './scrollPosition'
|
||||
import type { BlockView, OpenedFrom } from './types'
|
||||
|
||||
/**
|
||||
* 标签页切走时 VS Code 会销毁 webview、切回来重新加载,靠它恢复:哪些块停在「编辑」、
|
||||
* 页面重新加载(webview 进程崩了重建、开发者重载 webview)时靠它恢复(标签页切走时页面一直留着,用不上它):哪些块停在「编辑」、
|
||||
* 用户把哪些块、属性行和子行折叠 / 展开了(块 id 是它在树里的位置,文档刷新后照旧对得上;属性行、子行 id 见 [propertyRowId]、[propertyItemId]),滚到了哪,
|
||||
* 以及开着哪一块的调用树弹框、选中第几个入口。
|
||||
* VS Code 重启后恢复标签页时也带着它,这个标签页是从哪儿打开的靠它报回扩展端。
|
||||
|
||||
Reference in new issue
Block a user