Skip to content

Commit fc5c958

Browse files
committed
Fix #4076 Transport destroyed message in viewer
1 parent ab98b82 commit fc5c958

File tree

1 file changed

+34
-28
lines changed

1 file changed

+34
-28
lines changed

viewer/latexworkshop.ts

Lines changed: 34 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -362,27 +362,25 @@ class LateXWorkshopPdfViewer implements ILatexWorkshopPdfViewer {
362362
this.addLogMessage('Auto reload temporarily disabled.')
363363
return
364364
}
365-
let pack = {
366-
scale: PDFViewerApplication.pdfViewer.currentScaleValue,
367-
scrollMode: PDFViewerApplication.pdfViewer.scrollMode,
368-
sidebarView: PDFViewerApplication.pdfSidebar.visibleView,
369-
spreadMode: PDFViewerApplication.pdfViewer.spreadMode,
370-
scrollTop: (document.getElementById('viewerContainer') as HTMLElement).scrollTop,
371-
scrollLeft: (document.getElementById('viewerContainer') as HTMLElement).scrollLeft
372-
}
373365
// Fail-safe. For unknown reasons, the pack may have null values #4076
374-
if (pack.scale === null && this.prevPack) {
375-
pack = this.prevPack
376-
} else {
377-
this.prevPack = pack
366+
const pack = {
367+
scale: PDFViewerApplication.pdfViewer.currentScaleValue ?? this.prevPack?.scale,
368+
scrollMode: PDFViewerApplication.pdfViewer.scrollMode ?? this.prevPack?.scrollMode,
369+
sidebarView: PDFViewerApplication.pdfSidebar.visibleView ?? this.prevPack?.sidebarView,
370+
spreadMode: PDFViewerApplication.pdfViewer.spreadMode ?? this.prevPack?.spreadMode,
371+
scrollTop: (document.getElementById('viewerContainer') as HTMLElement).scrollTop ?? this.prevPack?.scrollTop,
372+
scrollLeft: (document.getElementById('viewerContainer') as HTMLElement).scrollLeft ?? this.prevPack?.scrollLeft
378373
}
374+
this.prevPack = pack
379375

380376
// Note: without showPreviousViewOnLoad = false restoring the position after the refresh will fail if
381377
// the user has clicked on any link in the past (pdf.js will automatically navigate to that link).
382378
PDFViewerApplicationOptions.set('showPreviousViewOnLoad', false)
383379
// Override the spread mode specified in PDF documents with the current one.
384380
// https://github.com/James-Yu/LaTeX-Workshop/issues/1871
385-
PDFViewerApplicationOptions.set('spreadModeOnLoad', pack.spreadMode)
381+
if (pack.spreadMode) {
382+
PDFViewerApplicationOptions.set('spreadModeOnLoad', pack.spreadMode)
383+
}
386384

387385
void PDFViewerApplication.open({
388386
url: `${utils.pdfFilePrefix}${this.encodedPdfFilePath}`
@@ -391,18 +389,26 @@ class LateXWorkshopPdfViewer implements ILatexWorkshopPdfViewer {
391389
document.title = this.documentTitle
392390
})
393391
this.onPagesInit(() => {
394-
PDFViewerApplication.pdfSidebar.switchView(pack.sidebarView)
395-
PDFViewerApplication.pdfViewer.currentScaleValue = pack.scale
396-
PDFViewerApplication.pdfViewer.scrollMode = pack.scrollMode
397-
PDFViewerApplication.pdfViewer.spreadMode = pack.spreadMode;
398-
(document.getElementById('viewerContainer') as HTMLElement).scrollTop = pack.scrollTop;
399-
(document.getElementById('viewerContainer') as HTMLElement).scrollLeft = pack.scrollLeft
392+
if (pack.sidebarView) {
393+
PDFViewerApplication.pdfSidebar.switchView(pack.sidebarView)
394+
}
395+
PDFViewerApplication.pdfViewer.currentScaleValue = pack.scale ?? PDFViewerApplication.pdfViewer.currentScaleValue
396+
PDFViewerApplication.pdfViewer.scrollMode = pack.scrollMode ?? PDFViewerApplication.pdfViewer.scrollMode
397+
PDFViewerApplication.pdfViewer.spreadMode = pack.spreadMode ?? PDFViewerApplication.pdfViewer.spreadMode
398+
const viewerContainer: HTMLElement | null = document.getElementById('viewerContainer')
399+
if (viewerContainer) {
400+
viewerContainer.scrollTop = pack.scrollTop ?? viewerContainer.scrollTop ?? 0
401+
viewerContainer.scrollLeft = pack.scrollLeft ?? viewerContainer.scrollLeft ?? 0
402+
}
400403
}, {once: true})
401404
// The height of each page can change after a `pagesinit` event.
402405
// We have to set scrollTop on a `pagesloaded` event for that case.
403406
this.onPagesLoaded(() => {
404-
(document.getElementById('viewerContainer') as HTMLElement).scrollTop = pack.scrollTop;
405-
(document.getElementById('viewerContainer') as HTMLElement).scrollLeft = pack.scrollLeft
407+
const viewerContainer: HTMLElement | null = document.getElementById('viewerContainer')
408+
if (viewerContainer) {
409+
viewerContainer.scrollTop = pack.scrollTop ?? viewerContainer.scrollTop ?? 0
410+
viewerContainer.scrollLeft = pack.scrollLeft ?? viewerContainer.scrollLeft ?? 0
411+
}
406412
}, {once: true})
407413
this.onPagesLoaded(() => {
408414
this.send({type:'loaded', pdfFileUri: this.pdfFileUri})
@@ -422,12 +428,12 @@ class LateXWorkshopPdfViewer implements ILatexWorkshopPdfViewer {
422428
const { brightness, grayscale, hueRotate, invert, sepia } = params.invertMode
423429
const filter = `invert(${invert * 100}%) hue-rotate(${hueRotate}deg) grayscale(${grayscale}) sepia(${sepia}) brightness(${brightness})`
424430
if (this.isPrefersColorSchemeDark(params.codeColorTheme)) {
425-
(document.querySelector('#viewerContainer') as HTMLHtmlElement).style.filter = filter;
426-
(document.querySelector('#thumbnailView') as HTMLHtmlElement).style.filter = filter;
427-
(document.querySelector('#sidebarContent') as HTMLHtmlElement).style.background = 'var(--body-bg-color)'
431+
(document.querySelector('#viewerContainer') as HTMLHtmlElement).style.filter = filter
432+
;(document.querySelector('#thumbnailView') as HTMLHtmlElement).style.filter = filter
433+
;(document.querySelector('#sidebarContent') as HTMLHtmlElement).style.background = 'var(--body-bg-color)'
428434
} else {
429-
(document.querySelector('html') as HTMLHtmlElement).style.filter = filter;
430-
(document.querySelector('html') as HTMLHtmlElement).style.background = 'white'
435+
(document.querySelector('html') as HTMLHtmlElement).style.filter = filter
436+
;(document.querySelector('html') as HTMLHtmlElement).style.background = 'white'
431437
}
432438
}
433439
const css = document.styleSheets[document.styleSheets.length - 1]
@@ -627,9 +633,9 @@ class LateXWorkshopPdfViewer implements ILatexWorkshopPdfViewer {
627633
if (evt.key === 'Backspace' && evt.shiftKey && (evt.target as HTMLElement).nodeName !== 'INPUT') {
628634
this.viewerHistory.forward()
629635
}
630-
});
636+
})
631637

632-
(document.getElementById('outerContainer') as HTMLElement).onmousemove = (e) => {
638+
;(document.getElementById('outerContainer') as HTMLElement).onmousemove = (e) => {
633639
if (e.clientY <= 64) {
634640
this.showToolbar(true)
635641
}

0 commit comments

Comments
 (0)