feat(WebGLImageViewer): add resize observer for canvas resizing

Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
Innei
2025-06-11 15:52:45 +08:00
parent b50ebf0d30
commit 71ec6fefbb

View File

@@ -166,9 +166,19 @@ export class WebGLImageViewerEngine extends ImageViewerEngineBase {
this.notifyLoadingStateChange(false)
}
private resizeObserver: ResizeObserver | null = null
private setupCanvas() {
this.resizeCanvas()
window.addEventListener('resize', this.boundResizeCanvas)
if (this.resizeObserver) {
this.resizeObserver.disconnect()
}
this.resizeObserver = new ResizeObserver((e) => {
if (e[0].target !== this.canvas) return
this.boundResizeCanvas()
})
this.resizeObserver.observe(this.canvas)
}
private resizeCanvas() {
@@ -1036,6 +1046,9 @@ export class WebGLImageViewerEngine extends ImageViewerEngineBase {
if (this.program) {
this.gl.deleteProgram(this.program)
}
if (this.resizeObserver) {
this.resizeObserver.disconnect()
}
this.worker?.terminate()
}