diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index db60708660..6253a6d935 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -1661,9 +1661,7 @@ public class AdapterMessage extends RecyclerView.Adapter() { @Override public void onCurrentListChanged(@Nullable PagedList previousList, @Nullable PagedList currentList) { - if (gotoTop) { + int prev = (previousList == null ? 0 : previousList.size()); + int cur = (currentList == null ? 0 : currentList.size()); + boolean autoscroll = + (prefs.getBoolean("autoscroll", false) || + viewType == AdapterMessage.ViewType.THREAD); + + if (gotoTop || (autoscroll && cur > prev)) { gotoTop = false; properties.scrollTo(0); } diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 822d55f38b..21741c0923 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -201,7 +201,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. private boolean date; private boolean threading; private boolean swipenav; - private boolean autoscroll; private boolean seekbar; private boolean actionbar; private boolean autoexpand; @@ -219,7 +218,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. private boolean initialized = false; private boolean loading = false; private boolean manual = false; - private Integer lastUnseen = null; private boolean swiping = false; private AdapterMessage adapter; @@ -303,9 +301,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); swipenav = prefs.getBoolean("swipenav", true); - autoscroll = - (prefs.getBoolean("autoscroll", false) || - viewType == AdapterMessage.ViewType.THREAD); cards = prefs.getBoolean("cards", true); date = prefs.getBoolean("date", true); threading = prefs.getBoolean("threading", true); @@ -2324,20 +2319,13 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. case THREAD: db.message().liveThreadStats(account, thread, null).observe(getViewLifecycleOwner(), new Observer() { - Integer lastUnseen = null; - @Override public void onChanged(TupleThreadStats stats) { - setSubtitle(stats == null || stats.accountName == null ? "" : stats.accountName); - - if (stats != null && stats.count != null && stats.seen != null) { - int unseen = stats.count - stats.seen; - if (lastUnseen == null || lastUnseen != unseen) { - if (autoscroll && lastUnseen != null && lastUnseen < unseen) - loadMessages(true); - lastUnseen = unseen; - } - } + if (stats == null) + return; + + int unseen = stats.count - stats.seen; + setSubtitle(getString(R.string.title_name_count, stats.accountName, NF.format(unseen))); } }); db.message().liveHiddenThread(account, thread).observe(getViewLifecycleOwner(), new Observer>() { @@ -2876,15 +2864,6 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. else fabError.hide(); - // Auto scroll - if (lastUnseen == null || lastUnseen != unseen) { - if ((!refreshing && manual) || - (autoscroll && lastUnseen != null && lastUnseen < unseen)) - loadMessages(true); - manual = false; - lastUnseen = unseen; - } - swipeRefresh.setRefreshing(refreshing); } diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java index 670a9c58bf..420afae17c 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsBehavior.java @@ -104,7 +104,6 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { prefs.edit().putBoolean("autoscroll", checked).apply(); - swDoubleTap.setEnabled(!checked); } }); @@ -259,7 +258,6 @@ public class FragmentOptionsBehavior extends FragmentBase implements SharedPrefe swPull.setChecked(prefs.getBoolean("pull", true)); swAutoScroll.setChecked(prefs.getBoolean("autoscroll", false)); swDoubleTap.setChecked(prefs.getBoolean("doubletap", false)); - swDoubleTap.setEnabled(!swAutoScroll.isChecked()); swSwipeNav.setChecked(prefs.getBoolean("swipenav", true)); swReversed.setChecked(prefs.getBoolean("reversed", false)); swAutoExpand.setChecked(prefs.getBoolean("autoexpand", true));