commit 080f78265081d7cc3d847599e7103a34da9123e7
parent 8b7d77523fffa2dda46a8c4997da5ac896982792
Author: Mugurell <Mugurell@users.noreply.github.com>
Date: Thu, 27 Nov 2025 16:19:31 +0000
Bug 2001536 - Force show the dynamic toolbar after virtual keyboard is dismissed r=android-reviewers,Roger
Differential Revision: https://phabricator.services.mozilla.com/D274292
Diffstat:
1 file changed, 25 insertions(+), 0 deletions(-)
diff --git a/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/FenixBrowserToolbarView.kt b/mobile/android/fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/FenixBrowserToolbarView.kt
@@ -7,6 +7,9 @@ package org.mozilla.fenix.components.toolbar
import android.view.View
import android.view.ViewGroup
import androidx.annotation.VisibleForTesting
+import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.getValue
+import androidx.compose.ui.platform.ComposeView
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.view.isVisible
import mozilla.components.browser.state.state.CustomTabSessionState
@@ -18,6 +21,8 @@ import mozilla.components.ui.widgets.behavior.DependencyGravity.Bottom
import mozilla.components.ui.widgets.behavior.DependencyGravity.Top
import mozilla.components.ui.widgets.behavior.EngineViewScrollingBehavior
import mozilla.components.ui.widgets.behavior.EngineViewScrollingBehaviorFactory
+import org.mozilla.fenix.compose.utils.KeyboardState
+import org.mozilla.fenix.compose.utils.keyboardAsState
import org.mozilla.fenix.utils.Settings
/**
@@ -32,6 +37,11 @@ abstract class FenixBrowserToolbarView(
private val settings: Settings,
private val customTabSession: CustomTabSessionState?,
) : ScrollableToolbar {
+
+ init {
+ setupShowingToolbarsAfterKeyboardHidden()
+ }
+
abstract val layout: View
@VisibleForTesting
@@ -152,4 +162,19 @@ abstract class FenixBrowserToolbarView(
}
protected fun shouldShowTabStrip() = customTabSession == null && settings.isTabStripEnabled
+
+ private fun setupShowingToolbarsAfterKeyboardHidden() {
+ parent.addView(
+ ComposeView(parent.context).apply {
+ setContent {
+ val keyboardState by keyboardAsState()
+ LaunchedEffect(keyboardState) {
+ if (keyboardState == KeyboardState.Closed) {
+ expand()
+ }
+ }
+ }
+ },
+ )
+ }
}