Skip to content

Commit f2a09e4

Browse files
Merge pull request #15948 from nextcloud/fix/search-view-focus
fix: search view focus
2 parents 7a5e283 + 54b28f6 commit f2a09e4

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.kt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import android.view.MenuItem
4040
import android.view.View
4141
import android.view.ViewTreeObserver.OnGlobalLayoutListener
4242
import android.view.WindowManager.BadTokenException
43+
import android.view.inputmethod.InputMethodManager
4344
import androidx.activity.OnBackPressedCallback
4445
import androidx.annotation.VisibleForTesting
4546
import androidx.appcompat.widget.SearchView
@@ -888,9 +889,12 @@ class FileDisplayActivity :
888889
val searchMenuItem = menu.findItem(R.id.action_search)
889890
searchView = MenuItemCompat.getActionView(searchMenuItem) as SearchView?
890891
searchMenuItem.isVisible = false
891-
mSearchText.setOnClickListener { v: View? ->
892+
mSearchText.setOnClickListener {
892893
showSearchView()
893-
searchView?.isIconified = false
894+
searchView?.postDelayed({
895+
searchView?.isIconified = false
896+
searchView?.requestFocusFromTouch()
897+
}, 100)
894898
}
895899

896900
searchView?.let { viewThemeUtils.androidx.themeToolbarSearchView(it) }
@@ -961,7 +965,11 @@ class FileDisplayActivity :
961965
) {
962966
openDrawer()
963967
} else {
964-
onBackPressedDispatcher.onBackPressed()
968+
if (isSearchOpen()) {
969+
resetSearchAction()
970+
} else {
971+
onBackPressedDispatcher.onBackPressed()
972+
}
965973
}
966974
} else if (itemId == R.id.action_select_all) {
967975
val fragment = this.listOfFilesFragment
@@ -1239,17 +1247,18 @@ class FileDisplayActivity :
12391247
return
12401248
}
12411249

1242-
searchView?.setQuery("", true)
1243-
searchView?.onActionViewCollapsed()
12441250
searchView?.clearFocus()
1251+
val imm = getSystemService(INPUT_METHOD_SERVICE) as? InputMethodManager
1252+
imm?.hideSoftInputFromWindow(searchView?.windowToken, 0)
1253+
searchView?.setQuery("", false)
1254+
searchView?.onActionViewCollapsed()
12451255

12461256
if (isRoot(getCurrentDir()) && leftFragment is OCFileListFragment) {
12471257
// Remove the list to the original state
12481258
leftFragment.adapter?.let { adapter ->
12491259
val listOfHiddenFiles = adapter.listOfHiddenFiles
12501260
leftFragment.performSearch("", listOfHiddenFiles, true)
12511261
}
1252-
12531262
hideSearchView(getCurrentDir())
12541263
setDrawerIndicatorEnabled(isDrawerIndicatorAvailable)
12551264
}

0 commit comments

Comments
 (0)