diff --git a/images/src/org/intellij/images/editor/impl/jcef/JCefImageViewer.kt b/images/src/org/intellij/images/editor/impl/jcef/JCefImageViewer.kt index 20cd521222d3..f03f08475e81 100644 --- a/images/src/org/intellij/images/editor/impl/jcef/JCefImageViewer.kt +++ b/images/src/org/intellij/images/editor/impl/jcef/JCefImageViewer.kt @@ -126,15 +126,7 @@ class JCefImageViewer(private val myFile: VirtualFile, return } - if (options.isSmartZooming) { - val zoomFactor = options.getSmartZoomFactor( - Rectangle(Point(0, 0), Dimension(myState.imageSize.width, myState.imageSize.height)), - Dimension(myState.viewportSize.width, myState.viewportSize.height), - 5 - ) - execute("setZoom(${zoomFactor});") - } - else { + if (!options.isSmartZooming) { execute("setZoom(${state.zoomFactor});") } } @@ -236,7 +228,7 @@ class JCefImageViewer(private val myFile: VirtualFile, @Suppress("DEPRECATION") myViewerStateJSQuery = JBCefJSQuery.create(myBrowser) myViewerStateJSQuery.addHandler { s: String -> - val oldStatus = myState.status + val oldState = myState try { myState = jsonParser.decodeFromString(s) } @@ -245,8 +237,15 @@ class JCefImageViewer(private val myFile: VirtualFile, return@addHandler JBCefJSQuery.Response(null, 255, "Failed to parse the viewer state") } - // Init the viewer zoom factor - if (oldStatus == ViewerState.Status.INIT && oldStatus != myState.status) setState(myEditorState) + val zoomOptions = OptionsManager.getInstance().options.editorOptions.zoomOptions + if (oldState.status == ViewerState.Status.INIT && zoomOptions.isSmartZooming) { + val zoomFactor = zoomOptions.getSmartZoomFactor( + Rectangle(Point(0, 0), Dimension(myState.imageSize.width, myState.imageSize.height)), + Dimension(myState.viewportSize.width, myState.viewportSize.height), + 5 + ) + execute("setZoom(${zoomFactor});") + } SwingUtilities.invokeLater { if (myState.status == ViewerState.Status.OK) { diff --git a/images/src/org/intellij/images/editor/impl/jcef/resources/image_viewer.html b/images/src/org/intellij/images/editor/impl/jcef/resources/image_viewer.html index a55f9a071bae..b85ca6faf6eb 100644 --- a/images/src/org/intellij/images/editor/impl/jcef/resources/image_viewer.html +++ b/images/src/org/intellij/images/editor/impl/jcef/resources/image_viewer.html @@ -72,8 +72,9 @@ #svg_canvas { transform-origin: 0 0; - width: fit-content; - height: fit-content; + width: 0; + height: 0; + overflow: hidden; position: absolute; top: 50%; left: 50%; @@ -382,17 +383,19 @@ function setImageUrl(url) { if (!url) return - let size_observer = new ResizeObserver(() => { - setZoom(gState.zoom) - }) - size_observer.observe(gUI.image) + if (gState.status === ViewerStatus.INIT) { + let size_observer = new ResizeObserver(() => { + setZoom(gState.zoom) + }) + size_observer.observe(gUI.image) - let image_loaded_listener = function () { - size_observer.unobserve(gUI.image) - size_observer.disconnect() - gUI.image.removeEventListener('load', image_loaded_listener) + let remove_observer = function () { + size_observer.unobserve(gUI.image) + size_observer.disconnect() + gUI.image.removeEventListener('load', remove_observer) + } + gUI.image.addEventListener('load', remove_observer) } - gUI.image.addEventListener('load', image_loaded_listener) if (gIsDebug) { let url_input = document.getElementById("url_input")