From 14c3748380547fdcc84365174162df612acd5d8d Mon Sep 17 00:00:00 2001 From: Ulysses Date: Thu, 14 Aug 2025 11:34:18 +0200 Subject: [PATCH 1/2] onLoadEnd duplicate fix for #352 --- .../kotlin/com/multiplatform/webview/web/WebEngineExt.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebEngineExt.kt b/webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebEngineExt.kt index 55efdd4b..2b842761 100644 --- a/webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebEngineExt.kt +++ b/webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebEngineExt.kt @@ -129,7 +129,7 @@ internal fun CefBrowser.addLoadListener( KLogger.d { "Load End ${browser?.url}" } state.loadingState = LoadingState.Finished navigator.canGoBack = canGoBack() - navigator.canGoBack = canGoForward() + navigator.canGoForward = canGoForward() state.lastLoadedUrl = getCurrentUrl() } From c0d7bf654687f880ab5da5b906cca42862f9ed13 Mon Sep 17 00:00:00 2001 From: Ulysses Date: Thu, 14 Aug 2025 12:52:09 +0200 Subject: [PATCH 2/2] Currently possible fix for #354 --- .../webview/web/WebView.desktop.kt | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebView.desktop.kt b/webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebView.desktop.kt index fde1872e..15f69616 100644 --- a/webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebView.desktop.kt +++ b/webview/src/desktopMain/kotlin/com/multiplatform/webview/web/WebView.desktop.kt @@ -1,12 +1,6 @@ package com.multiplatform.webview.web -import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.getValue -import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.runtime.* import androidx.compose.ui.Modifier import androidx.compose.ui.awt.SwingPanel import com.multiplatform.webview.jsbridge.WebViewJsBridge @@ -15,6 +9,7 @@ import dev.datlag.kcef.KCEFBrowser import dev.datlag.kcef.KCEFClient import org.cef.browser.CefRendering import org.cef.browser.CefRequestContext +import java.util.concurrent.TimeUnit /** * Desktop WebView implementation. @@ -142,18 +137,28 @@ fun DesktopWebView( } browser?.let { - SwingPanel( - factory = { - onCreated(it) - browser.apply { - addDisplayHandler(state) - addLoadListener(state, navigator) - addRequestHandler(state, navigator) - } - browser.uiComponent - }, - modifier = modifier, - ) + if (runCatching { browser.windowlessFrameRate.get(100L, TimeUnit.MILLISECONDS) }.getOrNull() == null) { + SwingPanel( + factory = { + onCreated(browser) + browser.apply { + addDisplayHandler(state) + addLoadListener(state, navigator) + addRequestHandler(state, navigator) + } + browser.uiComponent + }, + modifier = modifier, + ) + } else { + onCreated(browser) + browser.apply { + addDisplayHandler(state) + addLoadListener(state, navigator) + addRequestHandler(state, navigator) + } + browser.uiComponent.size = java.awt.Dimension(1280, 720) + } } DisposableEffect(Unit) {