diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index a8dbd1e60a..77b7fa7c04 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -264,6 +264,7 @@ public class AdapterMessage extends RecyclerView.Adapter differ; @@ -5441,6 +5442,11 @@ public class AdapterMessage extends RecyclerView.Adapter 0) { + properties.scrollTo(gotoPos, 0); + gotoPos = null; + } + if (selectionTracker != null && selectionTracker.hasSelection()) { Selection selection = selectionTracker.getSelection(); @@ -5530,6 +5536,11 @@ public class AdapterMessage extends RecyclerView.Adapter list) { for (int i = 0; i < list.size(); i++) { TupleMessageEx message = list.get(i); diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 316a29b9c5..3e1293fb0b 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -300,6 +300,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. private SelectionPredicateMessage selectionPredicate = null; private SelectionTracker selectionTracker = null; + private Integer scroll = null; private Long prev = null; private Long next = null; private Long closeId = null; @@ -3373,6 +3374,9 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. if (rvMessage != null) { Parcelable rv = rvMessage.getLayoutManager().onSaveInstanceState(); outState.putParcelable("fair:rv", rv); + + LinearLayoutManager llm = (LinearLayoutManager) rvMessage.getLayoutManager(); + outState.putInt("fair:scroll", llm.findFirstVisibleItemPosition()); } if (selectionTracker != null) @@ -3402,6 +3406,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. rvMessage.getLayoutManager().onRestoreInstanceState(rv); } + adapter.gotoPos(savedInstanceState.getInt("fair:scroll")); + if (selectionTracker != null) selectionTracker.onRestoreInstanceState(savedInstanceState); }