1
0
Fork 0

For #1211 Hide the keyboard when scrolling through engine suggestions (#6474)

master
Mihai Adrian 2019-11-09 00:36:39 +02:00 committed by Sawyer Blatz
parent f476c624d7
commit 1388156953
2 changed files with 22 additions and 1 deletions

View File

@ -229,15 +229,19 @@ class SearchFragment : Fragment(), BackHandler {
override fun onPause() {
super.onPause()
toolbarView.view.clearFocus()
// clearing focus makes keyboard hidden after activity is resumed
awesomeBarView.isKeyboardDismissedProgrammatically = true
}
override fun onBackPressed(): Boolean {
return when {
qrFeature.onBackPressed() -> {
view?.searchScanButton?.isChecked = false
// set to true because keyboard is being dismissed when returning from qr scan
awesomeBarView.isKeyboardDismissedProgrammatically = true
toolbarView.view.requestFocus()
true
}
!awesomeBarView.isKeyboardDismissedProgrammatically -> true
else -> false
}
}

View File

@ -10,6 +10,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.graphics.drawable.toBitmap
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.extensions.LayoutContainer
import kotlinx.android.synthetic.main.fragment_search.*
import mozilla.components.browser.awesomebar.BrowserAwesomeBar
@ -24,6 +25,7 @@ import mozilla.components.feature.awesomebar.provider.SessionSuggestionProvider
import mozilla.components.feature.search.SearchUseCases
import mozilla.components.feature.session.SessionUseCases
import mozilla.components.feature.tabs.TabsUseCases
import mozilla.components.support.ktx.android.view.hideKeyboard
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.asActivity
@ -93,6 +95,7 @@ class AwesomeBarView(
private val defaultSearchSuggestionProvider: SearchSuggestionProvider
private val searchSuggestionProviderMap: MutableMap<SearchEngine, SearchSuggestionProvider>
private var providersInUse = mutableSetOf<AwesomeBar.SuggestionProvider>()
internal var isKeyboardDismissedProgrammatically: Boolean = false
private val loadUrlUseCase = object : SessionUseCases.LoadUrlUseCase {
override fun invoke(url: String, flags: EngineSession.LoadUrlFlags) {
@ -176,6 +179,20 @@ class AwesomeBarView(
searchShortcutsButton.setOnClickListener {
interactor.onSearchShortcutsButtonClicked()
}
val recyclerListener = object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
when (newState) {
RecyclerView.SCROLL_STATE_DRAGGING ->
if (!isKeyboardDismissedProgrammatically) {
view.hideKeyboard()
isKeyboardDismissedProgrammatically = true
}
RecyclerView.SCROLL_STATE_IDLE -> isKeyboardDismissedProgrammatically = false
}
}
}
view.addOnScrollListener(recyclerListener)
}
fun update(state: SearchFragmentState) {