diff --git a/demo-shared/src/commonMain/kotlin/io/github/kdroidfilter/webview/demo/App.kt b/demo-shared/src/commonMain/kotlin/io/github/kdroidfilter/webview/demo/App.kt index 12904ca..4579d1c 100644 --- a/demo-shared/src/commonMain/kotlin/io/github/kdroidfilter/webview/demo/App.kt +++ b/demo-shared/src/commonMain/kotlin/io/github/kdroidfilter/webview/demo/App.kt @@ -60,6 +60,7 @@ fun App() { rememberWebViewState("https://httpbin.org/html") { logSeverity = KLogSeverity.Info desktopWebSettings.transparent = true + androidWebSettings.goBackEnabled = true backgroundColor = androidx.compose.ui.graphics.Color.White } val jsBridge = rememberWebViewJsBridge(navigator) diff --git a/webview-compose/build.gradle.kts b/webview-compose/build.gradle.kts index 0730223..1bf0848 100644 --- a/webview-compose/build.gradle.kts +++ b/webview-compose/build.gradle.kts @@ -48,6 +48,7 @@ kotlin { androidMain.dependencies { implementation(libs.kotlinx.coroutinesAndroid) + implementation(libs.androidx.activity.compose) } jvmMain.dependencies { diff --git a/webview-compose/src/androidMain/kotlin/io/github/kdroidfilter/webview/web/WebViewAndroid.kt b/webview-compose/src/androidMain/kotlin/io/github/kdroidfilter/webview/web/WebViewAndroid.kt index aa0b43a..1244ad0 100644 --- a/webview-compose/src/androidMain/kotlin/io/github/kdroidfilter/webview/web/WebViewAndroid.kt +++ b/webview-compose/src/androidMain/kotlin/io/github/kdroidfilter/webview/web/WebViewAndroid.kt @@ -8,6 +8,7 @@ import android.webkit.WebResourceError import android.webkit.WebResourceRequest import android.webkit.WebView import android.webkit.WebViewClient +import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -79,6 +80,12 @@ private fun AndroidWebViewContainer( val chromeClient = remember { AndroidWebChromeClient(state, navigator) } val scope = rememberCoroutineScope() + BackHandler( + enabled = state.webSettings.androidWebSettings.goBackEnabled && navigator.canGoBack, + ) { + navigator.navigateBack() + } + AndroidView( factory = { context -> factory(context).apply { diff --git a/webview-compose/src/commonMain/kotlin/io/github/kdroidfilter/webview/setting/PlatformWebSettings.kt b/webview-compose/src/commonMain/kotlin/io/github/kdroidfilter/webview/setting/PlatformWebSettings.kt index e122804..42383b6 100644 --- a/webview-compose/src/commonMain/kotlin/io/github/kdroidfilter/webview/setting/PlatformWebSettings.kt +++ b/webview-compose/src/commonMain/kotlin/io/github/kdroidfilter/webview/setting/PlatformWebSettings.kt @@ -10,6 +10,7 @@ sealed class PlatformWebSettings { var allowFileAccess: Boolean = false, var textZoom: Int = 100, var useWideViewPort: Boolean = false, + var goBackEnabled: Boolean = false ) : PlatformWebSettings() data class DesktopWebSettings(