Simplified/fixed scroll to top

pull/168/head
M66B 6 years ago
parent fa7ee6953f
commit c1bd4968ac

@ -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);

Loading…
Cancel
Save