mirror of
https://github.com/M66B/FairEmail.git
synced 2026-03-26 19:05:23 +01:00
Simplified/fixed scroll to top
This commit is contained in:
@@ -3658,29 +3658,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||
this.differ.addPagedListListener(new AsyncPagedListDiffer.PagedListListener<TupleMessageEx>() {
|
||||
@Override
|
||||
public void onCurrentListChanged(@Nullable PagedList<TupleMessageEx> previousList, @Nullable PagedList<TupleMessageEx> currentList) {
|
||||
boolean autoscroll =
|
||||
(viewType == AdapterMessage.ViewType.THREAD ||
|
||||
(viewType != ViewType.SEARCH &&
|
||||
prefs.getBoolean("autoscroll", true)));
|
||||
|
||||
int prev = 0;
|
||||
if (autoscroll && previousList != null)
|
||||
for (int i = 0; i < previousList.size(); i++) {
|
||||
TupleMessageEx message = previousList.get(i);
|
||||
if (message != null && !message.ui_seen && !message.ui_ignored && !message.duplicate)
|
||||
prev++;
|
||||
}
|
||||
|
||||
int cur = 0;
|
||||
if (autoscroll && currentList != null)
|
||||
for (int i = 0; i < currentList.size(); i++) {
|
||||
TupleMessageEx message = currentList.get(i);
|
||||
if (message != null && !message.ui_seen && !message.ui_ignored && !message.duplicate)
|
||||
cur++;
|
||||
}
|
||||
|
||||
if (gotoTop ||
|
||||
(previousList != null && currentList != null && cur > prev)) {
|
||||
if (gotoTop) {
|
||||
gotoTop = false;
|
||||
properties.scrollTo(0);
|
||||
}
|
||||
|
||||
@@ -3175,6 +3175,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
};
|
||||
|
||||
private Observer<PagedList<TupleMessageEx>> observer = new Observer<PagedList<TupleMessageEx>>() {
|
||||
private List<Long> ids = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void onChanged(@Nullable PagedList<TupleMessageEx> messages) {
|
||||
if (messages == null)
|
||||
@@ -3184,6 +3186,27 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
|
||||
if (handleThreadActions(messages))
|
||||
return;
|
||||
|
||||
if (viewType == AdapterMessage.ViewType.THREAD)
|
||||
adapter.gotoTop();
|
||||
else if (viewType != AdapterMessage.ViewType.SEARCH) {
|
||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
|
||||
boolean autoscroll = prefs.getBoolean("autoscroll", true);
|
||||
if (autoscroll) {
|
||||
boolean gotoTop = false;
|
||||
for (int i = 0; i < messages.size(); i++) {
|
||||
TupleMessageEx message = messages.get(i);
|
||||
if (message != null && !ids.contains(message.id)) {
|
||||
ids.add(message.id);
|
||||
if (!message.ui_seen)
|
||||
gotoTop = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (gotoTop)
|
||||
adapter.gotoTop();
|
||||
}
|
||||
}
|
||||
|
||||
Log.i("Submit messages=" + messages.size());
|
||||
adapter.submitList(messages);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user