Skip to content

Commit f3fc022

Browse files
authored
fix: update content when ready, fix cannot drag to new window (#270)
- fix: return 0 directly when diagnostics is empty - fix: update content when ready, fix cannot drag to new window - fix: dispose onDidChange listener when webview is disposed
1 parent 4f9be70 commit f3fc022

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

src/core/pdfViewEditorProvider.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,23 @@ export class PdfViewEditorProvider implements vscode.CustomEditorProvider<PdfDoc
5858

5959
public async resolveCustomEditor(doc: PdfDocument, webviewPanel: vscode.WebviewPanel): Promise<void> {
6060
EventBus.fire('pdfWillOpenEvent', {uri: doc.uri, doc, webviewPanel});
61-
doc.onDidChange(() => {
62-
webviewPanel.webview.postMessage({type:'update', content:doc.cache.buffer});
61+
62+
const updateWebview = () => {
63+
if (doc.cache.buffer.byteLength !== 0) {
64+
webviewPanel.webview.postMessage({type:'update', content:doc.cache.buffer});
65+
}
66+
}
67+
68+
const docOnDidChangeListener = doc.onDidChange(() => {
69+
updateWebview();
70+
});
71+
72+
webviewPanel.onDidDispose(() => {
73+
docOnDidChangeListener.dispose();
6374
});
6475

6576
webviewPanel.webview.options = {enableScripts:true};
6677
webviewPanel.webview.html = await this.getHtmlForWebview(webviewPanel.webview);
67-
webviewPanel.webview.postMessage({type:'update', content:doc.cache.buffer});
6878

6979
// register event listeners
7080
webviewPanel.onDidChangeViewState((e) => {
@@ -84,6 +94,7 @@ export class PdfViewEditorProvider implements vscode.CustomEditorProvider<PdfDoc
8494
const state = GlobalStateManager.getPdfViewPersist(this.context, doc.uri.toString());
8595
const colorThemes = vscode.workspace.getConfiguration('overleaf-workshop.pdfViewer').get('themes', undefined);
8696
webviewPanel.webview.postMessage({type:'initState', content:state, colorThemes});
97+
updateWebview();
8798
break;
8899
default:
89100
break;

src/intellisense/langMisspellingCheckProvider.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ export class MisspellingCheckProvider extends IntellisenseProvider implements vs
105105
}
106106

107107
provideCodeActions(document: vscode.TextDocument, range: vscode.Range, context: vscode.CodeActionContext, token: vscode.CancellationToken): vscode.ProviderResult<vscode.CodeAction[]> {
108+
if (context.diagnostics.length === 0) {
109+
return [];
110+
}
111+
108112
const diagnostic = context.diagnostics[0];
109113
const actions = this.suggestionCache.get(diagnostic.code as string)
110114
?.slice(0,8).map(suggestion => {

0 commit comments

Comments
 (0)