[fenix] Bug 1815548 – Add offset parameter to menu2

pull/600/head
mike a 1 year ago committed by mergify[bot]
parent 50448a6ccb
commit dcbce063d7

@ -349,11 +349,11 @@ class HomeFragment : Fragment() {
}
requireContext().settings().showUnifiedSearchFeature.let {
binding.searchSelector.isVisible = it
binding.searchSelectorButton.isVisible = it
binding.searchEngineIcon.isGone = it
}
binding.searchSelector.apply {
binding.searchSelectorButton.apply {
setOnClickListener {
val orientation = if (context.settings().shouldUseBottomToolbar) {
Orientation.UP
@ -362,7 +362,10 @@ class HomeFragment : Fragment() {
}
UnifiedSearch.searchMenuTapped.record(NoExtras())
searchSelectorMenu.menuController.show(anchor = it, orientation = orientation)
searchSelectorMenu.menuController.show(
anchor = it.findViewById(R.id.search_selector),
orientation = orientation,
)
}
}
@ -678,7 +681,7 @@ class HomeFragment : Fragment() {
}
if (requireContext().settings().showUnifiedSearchFeature) {
binding.searchSelector.setIcon(icon, name)
binding.searchSelectorButton.setIcon(icon, name)
} else {
binding.searchEngineIcon.setImageDrawable(icon)
}

@ -9,11 +9,13 @@ import androidx.appcompat.content.res.AppCompatResources
import mozilla.components.browser.menu2.BrowserMenuController
import mozilla.components.browser.state.search.SearchEngine
import mozilla.components.concept.menu.MenuController
import mozilla.components.concept.menu.MenuStyle
import mozilla.components.concept.menu.candidate.DecorativeTextMenuCandidate
import mozilla.components.concept.menu.candidate.DrawableMenuIcon
import mozilla.components.concept.menu.candidate.MenuCandidate
import mozilla.components.concept.menu.candidate.TextMenuCandidate
import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.android.util.dpToPx
import org.mozilla.fenix.R
typealias MozSearchEngine = SearchEngine
@ -46,7 +48,17 @@ class SearchSelectorMenu(
data class SearchEngine(val searchEngine: MozSearchEngine) : Item()
}
val menuController: MenuController by lazy { BrowserMenuController() }
val menuController: MenuController by lazy {
BrowserMenuController(
style = MenuStyle(
// Adjusting the menu to have 4dp spacing. By default, search_selector has horizontal
// spacing of 8dp, and vertical spacing with the container view of 6dp.
horizontalOffset = (-4).dpToPx(context.resources.displayMetrics),
verticalOffset = (-2).dpToPx(context.resources.displayMetrics),
completelyOverlap = true,
),
)
}
internal fun menuItems(searchEngines: List<MenuCandidate>): List<MenuCandidate> {
val headerCandidate = DecorativeTextMenuCandidate(

@ -63,7 +63,10 @@ class SearchSelectorToolbarAction(
}
UnifiedSearch.searchMenuTapped.record(NoExtras())
menu.menuController.show(anchor = it, orientation = orientation)
menu.menuController.show(
anchor = it.findViewById(R.id.search_selector),
orientation = orientation,
)
}
val topPadding = resources.getDimensionPixelSize(R.dimen.search_engine_engine_icon_top_margin)

@ -146,7 +146,7 @@
android:importantForAccessibility="no" />
<org.mozilla.fenix.search.toolbar.SearchSelector
android:id="@+id/search_selector"
android:id="@+id/search_selector_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center_vertical"

@ -11,6 +11,7 @@ import android.graphics.drawable.BitmapDrawable
import android.view.ViewGroup
import android.widget.LinearLayout
import androidx.core.graphics.applyCanvas
import com.google.android.material.card.MaterialCardView
import io.mockk.MockKAnnotations
import io.mockk.every
import io.mockk.impl.annotations.MockK
@ -81,6 +82,7 @@ class SearchSelectorToolbarActionTest {
),
)
val view = action.createView(LinearLayout(testContext) as ViewGroup) as SearchSelector
val selectorIcon = view.findViewById<MaterialCardView>(R.id.search_selector)
assertNull(UnifiedSearch.searchMenuTapped.testGetValue())
every { settings.shouldUseBottomToolbar } returns false
@ -88,7 +90,7 @@ class SearchSelectorToolbarActionTest {
assertNotNull(UnifiedSearch.searchMenuTapped.testGetValue())
verify {
menu.menuController.show(view, Orientation.DOWN)
menu.menuController.show(anchor = selectorIcon, Orientation.DOWN)
}
every { settings.shouldUseBottomToolbar } returns true
@ -96,7 +98,7 @@ class SearchSelectorToolbarActionTest {
assertNotNull(UnifiedSearch.searchMenuTapped.testGetValue())
verify {
menu.menuController.show(view, Orientation.UP)
menu.menuController.show(anchor = selectorIcon, Orientation.UP)
}
}

Loading…
Cancel
Save