diff --git a/app/src/main/java/org/mozilla/fenix/ext/View.kt b/app/src/main/java/org/mozilla/fenix/ext/View.kt index f944e8e8bffa..9191336e0cdc 100644 --- a/app/src/main/java/org/mozilla/fenix/ext/View.kt +++ b/app/src/main/java/org/mozilla/fenix/ext/View.kt @@ -7,6 +7,7 @@ package org.mozilla.fenix.ext import android.graphics.Rect import android.view.TouchDelegate import android.view.View +import mozilla.components.browser.menu.BrowserMenu import mozilla.components.support.ktx.android.content.res.pxToDp fun View?.increaseTapArea(extraDps: Int) { @@ -22,3 +23,11 @@ fun View?.increaseTapArea(extraDps: Int) { parent.touchDelegate = TouchDelegate(touchRect, this) } } + +fun View.getMenuDirectionForLocation(): BrowserMenu.Orientation { + val location = IntArray(2) + getLocationInWindow(location) + return if (location[1] > (rootView.measuredHeight / 2)) + BrowserMenu.Orientation.UP else + BrowserMenu.Orientation.DOWN +} diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt index 376433a61424..502ead44bb05 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt @@ -16,11 +16,11 @@ import kotlinx.android.synthetic.main.collection_home_list_row.view.* import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job -import mozilla.components.browser.menu.BrowserMenu import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.item.SimpleBrowserMenuItem import org.mozilla.fenix.R import org.mozilla.fenix.ThemeManager +import org.mozilla.fenix.ext.getMenuDirectionForLocation import org.mozilla.fenix.ext.increaseTapArea import org.mozilla.fenix.ext.urlToTrimmedHost import org.mozilla.fenix.home.sessioncontrol.CollectionAction @@ -57,15 +57,11 @@ class CollectionViewHolder( collection_overflow_button.run { increaseTapArea(buttonIncreaseDps) setOnClickListener { - val location = IntArray(2) - it.getLocationInWindow(location) collectionMenu.menuBuilder .build(view.context) .show( anchor = it, - orientation = if (location[1] > (rootView.measuredHeight / 2)) - BrowserMenu.Orientation.UP else - BrowserMenu.Orientation.DOWN + orientation = it.getMenuDirectionForLocation() ) } } diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabHeaderViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabHeaderViewHolder.kt index ef5ad1eaa354..6c22efaff0e3 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabHeaderViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/TabHeaderViewHolder.kt @@ -9,10 +9,10 @@ import android.view.View import androidx.recyclerview.widget.RecyclerView import io.reactivex.Observer import kotlinx.android.synthetic.main.tab_header.view.* -import mozilla.components.browser.menu.BrowserMenu import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.item.SimpleBrowserMenuItem import org.mozilla.fenix.R +import org.mozilla.fenix.ext.getMenuDirectionForLocation import org.mozilla.fenix.home.sessioncontrol.SessionControlAction import org.mozilla.fenix.home.sessioncontrol.TabAction import org.mozilla.fenix.home.sessioncontrol.onNext @@ -48,7 +48,7 @@ class TabHeaderViewHolder( setOnClickListener { tabsMenu.menuBuilder .build(view.context) - .show(anchor = it, orientation = BrowserMenu.Orientation.DOWN) + .show(anchor = it, orientation = it.getMenuDirectionForLocation()) } } } diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt index efb44b8b870a..97b324275239 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt @@ -20,12 +20,12 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.launch import mozilla.appservices.places.BookmarkRoot import mozilla.components.browser.icons.IconRequest -import mozilla.components.browser.menu.BrowserMenu import mozilla.components.concept.storage.BookmarkNode import mozilla.components.concept.storage.BookmarkNodeType import org.mozilla.fenix.R import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.ext.components +import org.mozilla.fenix.ext.getMenuDirectionForLocation import org.mozilla.fenix.ext.increaseTapArea import kotlin.coroutines.CoroutineContext @@ -176,13 +176,9 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer (it.rootView.measuredHeight / 2)) - BrowserMenu.Orientation.UP else - BrowserMenu.Orientation.DOWN + orientation = it.getMenuDirectionForLocation() ) } bookmark_title.text = if (item.title.isNullOrBlank()) item.url else item.title @@ -317,7 +313,7 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer