Skip to content

Commit 4080f43

Browse files
committed
Moving calculateTopOffset in CardBrowser.kt
1 parent 2397714 commit 4080f43

File tree

2 files changed

+12
-13
lines changed

2 files changed

+12
-13
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.kt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,8 @@ open class CardBrowser :
341341
launchCatchingTask {
342342
if (viewModel.isInMultiSelectMode) {
343343
viewModel.toggleRowSelection(id)
344-
viewModel.saveScrollingState(cardsListView, id)
344+
viewModel.saveScrollingState(id)
345+
viewModel.oldCardTopOffset = calculateTopOffset(viewModel.lastSelectedPosition)
345346
} else {
346347
val cardId = viewModel.queryDataForCardEdit(id)
347348
openNoteEditorForCard(cardId)
@@ -354,7 +355,8 @@ open class CardBrowser :
354355
if (viewModel.isInMultiSelectMode && viewModel.lastSelectedId != null) {
355356
viewModel.selectRowsBetween(viewModel.lastSelectedId!!, id)
356357
} else {
357-
viewModel.saveScrollingState(cardsListView, id)
358+
viewModel.saveScrollingState(id)
359+
viewModel.oldCardTopOffset = calculateTopOffset(viewModel.lastSelectedPosition)
358360
viewModel.toggleRowSelection(id)
359361
}
360362
}
@@ -1914,6 +1916,13 @@ open class CardBrowser :
19141916
): Intent = NoteEditorLauncher.AddNoteFromCardBrowser(viewModel).getIntent(context)
19151917
}
19161918

1919+
private fun calculateTopOffset(cardPosition: Int): Int {
1920+
val layoutManager = cardsListView.layoutManager as LinearLayoutManager
1921+
val firstVisiblePosition = layoutManager.findFirstVisibleItemPosition()
1922+
val view = cardsListView.getChildAt(cardPosition - firstVisiblePosition)
1923+
return view?.top ?: 0
1924+
}
1925+
19171926
private fun autoScrollTo(
19181927
newPosition: Int,
19191928
offset: Int,

AnkiDroid/src/main/java/com/ichi2/anki/browser/CardBrowserViewModel.kt

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ import androidx.lifecycle.ViewModel
2424
import androidx.lifecycle.viewModelScope
2525
import androidx.lifecycle.viewmodel.initializer
2626
import androidx.lifecycle.viewmodel.viewModelFactory
27-
import androidx.recyclerview.widget.LinearLayoutManager
28-
import androidx.recyclerview.widget.RecyclerView
2927
import anki.collection.OpChanges
3028
import anki.collection.OpChangesWithCount
3129
import anki.search.BrowserColumns
@@ -908,17 +906,9 @@ class CardBrowserViewModel(
908906
) : SearchState
909907
}
910908

911-
fun saveScrollingState(
912-
recyclerView: RecyclerView,
913-
id: CardOrNoteId,
914-
) {
909+
fun saveScrollingState(id: CardOrNoteId) {
915910
cards.indexOf(id).takeIf { it >= 0 }?.let { position ->
916-
val layoutManager = recyclerView.layoutManager as LinearLayoutManager
917-
val firstVisiblePosition = layoutManager.findFirstVisibleItemPosition()
918-
val cardView = recyclerView.getChildAt(position - firstVisiblePosition)
919-
920911
lastSelectedPosition = position
921-
oldCardTopOffset = cardView?.top ?: 0
922912
}
923913
}
924914
}

0 commit comments

Comments
 (0)