diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt
index 0bbfec41c666..ec749e8493ab 100644
--- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt
+++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt
@@ -895,6 +895,14 @@ class BrowserTabFragment :
if (swipingTabsFeature.isEnabled) {
disableSwipingOutsideTheOmnibar()
}
+
+ binding.includeNewBrowserTab.newTabLayout.apply {
+ setOnClickListener {
+ if (omnibar.omnibarTextInput.isFocused) {
+ binding.focusDummy.requestFocus()
+ }
+ }
+ }
}
@SuppressLint("ClickableViewAccessibility")
@@ -3302,6 +3310,14 @@ class BrowserTabFragment :
Timber.v("Keyboard now showing")
showKeyboard(omnibar.omnibarTextInput)
omnibar.showOutline(true)
+ omnibar.textInputRootView.post {
+ val rootView = omnibar.textInputRootView
+ val keyboardVisibilityUtil = KeyboardVisibilityUtil(rootView)
+ keyboardVisibilityUtil.addKeyboardHiddenListener {
+ binding.focusDummy.requestFocus()
+ omnibar.showOutline(false)
+ }
+ }
}
}
diff --git a/app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayout.kt b/app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayout.kt
index fa60b0fccf57..cbc2b6d3b480 100644
--- a/app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayout.kt
+++ b/app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayout.kt
@@ -56,6 +56,7 @@ import com.duckduckgo.app.browser.databinding.IncludeFindInPageBinding
import com.duckduckgo.app.browser.omnibar.Omnibar.OmnibarTextState
import com.duckduckgo.app.browser.omnibar.Omnibar.ViewMode
import com.duckduckgo.app.browser.omnibar.Omnibar.ViewMode.CustomTab
+import com.duckduckgo.app.browser.omnibar.Omnibar.ViewMode.NewTab
import com.duckduckgo.app.browser.omnibar.OmnibarLayout.Decoration.CancelAnimations
import com.duckduckgo.app.browser.omnibar.OmnibarLayout.Decoration.ChangeCustomTabTitle
import com.duckduckgo.app.browser.omnibar.OmnibarLayout.Decoration.DisableVoiceSearch
@@ -67,7 +68,6 @@ import com.duckduckgo.app.browser.omnibar.OmnibarLayout.Decoration.Outline
import com.duckduckgo.app.browser.omnibar.OmnibarLayout.Decoration.PrivacyShieldChanged
import com.duckduckgo.app.browser.omnibar.OmnibarLayoutViewModel.Command.CancelTrackersAnimation
import com.duckduckgo.app.browser.omnibar.OmnibarLayoutViewModel.Command.StartTrackersAnimation
-import com.duckduckgo.app.browser.omnibar.OmnibarLayoutViewModel.LeadingIconState
import com.duckduckgo.app.browser.omnibar.OmnibarLayoutViewModel.LeadingIconState.PRIVACY_SHIELD
import com.duckduckgo.app.browser.omnibar.OmnibarLayoutViewModel.ViewState
import com.duckduckgo.app.browser.omnibar.animations.BrowserTrackersAnimatorHelper
@@ -198,7 +198,7 @@ open class OmnibarLayout @JvmOverloads constructor(
ChangeBounds().apply {
duration = 400
interpolator = OvershootInterpolator(1.3f)
- }
+ },
)
addTransition(
Fade().apply {
@@ -208,7 +208,7 @@ open class OmnibarLayout @JvmOverloads constructor(
addTarget(fireIconMenu)
addTarget(tabsMenu)
addTarget(browserMenu)
- }
+ },
)
}
}
@@ -522,7 +522,6 @@ open class OmnibarLayout @JvmOverloads constructor(
val showBrowserMenu: Boolean,
val showBrowserMenuHighlight: Boolean,
val showChatMenu: Boolean,
- val experimentalIconsEnabled: Boolean
)
private var previousButtonState: ButtonState? = null
@@ -536,7 +535,6 @@ open class OmnibarLayout @JvmOverloads constructor(
showBrowserMenu = viewState.showBrowserMenu,
showBrowserMenuHighlight = viewState.showBrowserMenuHighlight,
showChatMenu = viewState.showChatMenu,
- experimentalIconsEnabled = viewState.experimentalIconsEnabled
)
if (!isInitialRender && newButtonState != previousButtonState) {
@@ -550,7 +548,7 @@ open class OmnibarLayout @JvmOverloads constructor(
browserMenu.isVisible = viewState.showBrowserMenu
browserMenuHighlight.isVisible = viewState.showBrowserMenuHighlight
spacer.isVisible = viewState.showVoiceSearch || viewState.showClearButton
- aiChatMenu.isVisible = viewState.showChatMenu
+ aiChatMenu.isVisible = viewState.viewMode is NewTab || viewState.showChatMenu
toolbarContainer.requestLayout()
isInitialRender = false
diff --git a/app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayoutViewModel.kt b/app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayoutViewModel.kt
index 9c34395d7ad0..e5b303fcddd3 100644
--- a/app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayoutViewModel.kt
+++ b/app/src/main/java/com/duckduckgo/app/browser/omnibar/OmnibarLayoutViewModel.kt
@@ -117,10 +117,10 @@ class OmnibarLayoutViewModel @Inject constructor(
val hasUnreadTabs: Boolean = false,
val shouldUpdateTabsCount: Boolean = false,
val showVoiceSearch: Boolean = false,
- val showClearButton: Boolean = true,
- val showTabsMenu: Boolean = false,
- val showFireIcon: Boolean = false,
- val showBrowserMenu: Boolean = false,
+ val showClearButton: Boolean = false,
+ val showTabsMenu: Boolean = true,
+ val showFireIcon: Boolean = true,
+ val showBrowserMenu: Boolean = true,
val showChatMenu: Boolean = true,
val showBrowserMenuHighlight: Boolean = false,
val scrollingEnabled: Boolean = true,
@@ -149,41 +149,13 @@ class OmnibarLayoutViewModel @Inject constructor(
logVoiceSearchAvailability()
}
- private fun onOmnibarClicked() {
- Timber.d("Omnibar: onOmnibarClicked")
-
- viewModelScope.launch {
- command.send(Command.CancelTrackersAnimation)
- }
-
- _viewState.update {
- it.copy(
- hasFocus = true,
- expanded = true,
- leadingIconState = SEARCH,
- highlightPrivacyShield = HighlightableButton.Gone,
- showClearButton = true,
- showTabsMenu = false,
- showFireIcon = false,
- showBrowserMenu = false,
- showChatMenu = true,
- showVoiceSearch = shouldShowVoiceSearch(
- hasFocus = true,
- query = _viewState.value.omnibarText,
- hasQueryChanged = false,
- urlLoaded = _viewState.value.url,
- ),
- )
- }
- }
-
fun onOmnibarFocusChanged(
hasFocus: Boolean,
query: String,
) {
Timber.d("Omnibar: onOmnibarFocusChanged")
- val showClearButton = hasFocus
- val showControls = !hasFocus
+ val showClearButton = hasFocus && query.isNotBlank()
+ val showControls = query.isBlank()
if (hasFocus) {
viewModelScope.launch {
@@ -398,7 +370,7 @@ class OmnibarLayoutViewModel @Inject constructor(
showBrowserMenu = showControls,
showTabsMenu = showControls,
showFireIcon = showControls,
- showChatMenu = !showControls,
+ showChatMenu = false,
)
}
}
@@ -568,7 +540,6 @@ class OmnibarLayoutViewModel @Inject constructor(
fun onUserTouchedOmnibarTextInput(touchAction: Int) {
Timber.d("Omnibar: onUserTouchedOmnibarTextInput")
- onOmnibarClicked()
if (touchAction == ACTION_UP) {
firePixelBasedOnCurrentUrl(
AppPixelName.ADDRESS_BAR_NEW_TAB_PAGE_CLICKED,
diff --git a/app/src/main/res/layout/include_new_browser_tab.xml b/app/src/main/res/layout/include_new_browser_tab.xml
index 65fc2249ccfe..72d10bd53185 100644
--- a/app/src/main/res/layout/include_new_browser_tab.xml
+++ b/app/src/main/res/layout/include_new_browser_tab.xml
@@ -22,6 +22,8 @@
android:layout_height="match_parent"
android:clipChildren="false"
android:fillViewport="true"
+ android:clickable="true"
+ android:focusable="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context="com.duckduckgo.app.browser.BrowserActivity"
tools:showIn="@layout/fragment_browser_tab">
diff --git a/app/src/main/res/layout/view_new_omnibar.xml b/app/src/main/res/layout/view_new_omnibar.xml
index f480436efea5..6a2e6c06e3ea 100644
--- a/app/src/main/res/layout/view_new_omnibar.xml
+++ b/app/src/main/res/layout/view_new_omnibar.xml
@@ -260,19 +260,17 @@
android:padding="@dimen/keyline_2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@id/fireIconMenu"
- app:layout_constraintHorizontal_chainStyle="spread"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
-
+ android:src="@drawable/ic_ai_chat_outline_24" />
-
+ android:src="@drawable/ic_ai_chat_outline_24" />
Back
Forward
- Search or type URL
+ Search
Clear search input
No compatible app installed
Add Bookmark
diff --git a/common/common-utils/src/main/java/com/duckduckgo/common/utils/KeyboardVisibilityUtil.kt b/common/common-utils/src/main/java/com/duckduckgo/common/utils/KeyboardVisibilityUtil.kt
index 5c1cca0c9271..e7fe291d483e 100644
--- a/common/common-utils/src/main/java/com/duckduckgo/common/utils/KeyboardVisibilityUtil.kt
+++ b/common/common-utils/src/main/java/com/duckduckgo/common/utils/KeyboardVisibilityUtil.kt
@@ -35,6 +35,17 @@ class KeyboardVisibilityUtil(private val rootView: View) {
)
}
+ fun addKeyboardHiddenListener(onKeyboardHidden: () -> Unit) {
+ var wasKeyboardVisible = isKeyboardVisible()
+ rootView.viewTreeObserver.addOnGlobalLayoutListener {
+ val isVisible = isKeyboardVisible()
+ if (wasKeyboardVisible && !isVisible) {
+ onKeyboardHidden()
+ }
+ wasKeyboardVisible = isVisible
+ }
+ }
+
private fun isKeyboardVisible(): Boolean {
val rect = Rect()
rootView.getWindowVisibleDisplayFrame(rect)