From bd2936b05eb57998d8c0f9bdc578002d1cbe6b96 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 30 Jan 2024 13:59:15 +0100 Subject: [PATCH] Fixed weird scrolling position in conversation after going into info and going back --- .../ui/main/chat/fragment/ConversationFragment.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 739366ccc..ff215bf0c 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -648,6 +648,7 @@ class ConversationFragment : SlidingPaneChildFragment() { viewModel.updateCurrentlyDisplayedConversation() if (viewModel.scrollingPosition != SCROLLING_POSITION_NOT_SET) { + Log.d("$TAG Restoring previous scrolling position: ${viewModel.scrollingPosition}") binding.eventsList.scrollToPosition(viewModel.scrollingPosition) } @@ -680,8 +681,13 @@ class ConversationFragment : SlidingPaneChildFragment() { Log.e("$TAG Failed to unregister data observer to adapter: $e") } - val layoutManager = binding.eventsList.layoutManager as LinearLayoutManager - viewModel.scrollingPosition = layoutManager.findFirstCompletelyVisibleItemPosition() + if (viewModel.isUserScrollingUp.value == true) { + val layoutManager = binding.eventsList.layoutManager as LinearLayoutManager + viewModel.scrollingPosition = layoutManager.findFirstCompletelyVisibleItemPosition() + Log.d("$TAG Storing current scrolling position: ${viewModel.scrollingPosition}") + } else { + viewModel.scrollingPosition = SCROLLING_POSITION_NOT_SET + } val bottomSheetBehavior = BottomSheetBehavior.from(binding.messageBottomSheet.root) bottomSheetBehavior.removeBottomSheetCallback(bottomSheetCallback)