aboutsummaryrefslogtreecommitdiff
path: root/app/src/main
diff options
context:
space:
mode:
authorFabian Henneke <FabianHenneke@users.noreply.github.com>2020-03-27 10:02:31 +0100
committerGitHub <noreply@github.com>2020-03-27 10:02:31 +0100
commit94b0b64501da5be8bdbefb237a3193e15ed1b456 (patch)
tree2fef18483933b0c35b13ccb86fef4789edc5b5c0 /app/src/main
parent791868f3d6a871379b766e44fb41755d794eb36e (diff)
Fix: Restore store scroll position on back press (#670)
Restoring the scroll position in the main store fragment is currently broken since the stored state (recyclerView.verticalScrollbarPosition) is always 0 - it is just an enum that governs where the scrollbar is placed on the screen. The fix is to remember the list position of the last fully visible item and scroll to it when restoring the scroll position. Co-authored-by: Harsh Shandilya <msfjarvis@gmail.com>
Diffstat (limited to 'app/src/main')
-rw-r--r--app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt4
1 files changed, 2 insertions, 2 deletions
diff --git a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
index a6c7bc67..52d3881e 100644
--- a/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
+++ b/app/src/main/java/com/zeapo/pwdstore/PasswordFragment.kt
@@ -123,7 +123,7 @@ class PasswordFragment : Fragment() {
)
// push the category were we're going
pathStack.push(item.file)
- scrollPosition.push(recyclerView.verticalScrollbarPosition)
+ scrollPosition.push((recyclerView.layoutManager as LinearLayoutManager).findLastCompletelyVisibleItemPosition())
recyclerView.scrollToPosition(0)
recyclerAdapter.clear()
recyclerAdapter.addAll(getPasswords(item.file, getRepositoryDirectory(context), sortOrder))
@@ -235,7 +235,7 @@ class PasswordFragment : Fragment() {
/** Goes back one level back in the path */
fun popBack() {
if (passListStack.isEmpty()) return
- recyclerView.scrollToPosition(scrollPosition.pop())
+ (recyclerView.layoutManager as LinearLayoutManager).scrollToPosition(scrollPosition.pop())
recyclerAdapter.clear()
recyclerAdapter.addAll(passListStack.pop())
pathStack.pop()