Fixed scroll on expand

pull/187/head
M66B 4 years ago
parent 9906ef5b6b
commit 0842f828a5

@ -3545,12 +3545,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
.putExtra("id", message.id));
else {
boolean expanded = !properties.getValue("expanded", message.id);
properties.setExpanded(message, expanded);
// Needed to scroll to item after collapsing other items
if (expanded)
properties.scrollTo(getAdapterPosition(), 0);
properties.setExpanded(message, expanded, expanded);
}
}
@ -4298,7 +4293,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
message.ui_seen = args.getBoolean("seen");
message.unseen = (message.ui_seen ? 0 : message.count);
properties.setExpanded(message, false);
properties.setExpanded(message, false, false);
}
@Override
@ -5803,8 +5798,14 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
return;
}
boolean scroll = false;
if (viewType == ViewType.THREAD) {
scroll = properties.getValue("scroll", message.id);
properties.setValue("scroll", message.id, false);
}
holder.unwire();
holder.bindTo(message, false);
holder.bindTo(message, scroll);
holder.wire();
}
@ -5886,7 +5887,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
boolean getValue(String name, long id);
void setExpanded(TupleMessageEx message, boolean expanded);
void setExpanded(TupleMessageEx message, boolean expanded, boolean scroll);
void setSize(long id, Float size);

@ -1588,7 +1588,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
}
@Override
public void setExpanded(TupleMessageEx message, boolean value) {
public void setExpanded(TupleMessageEx message, boolean value, boolean scroll) {
// Prevent flicker
if (value && message.accountAutoSeen && !message.folderReadOnly) {
message.unseen = 0;
@ -1598,6 +1598,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
}
setValue("expanded", message.id, value);
if (scroll)
setValue("scroll", message.id, true);
final int p = adapter.getPositionForKey(message.id);
if (p != NO_POSITION)
@ -4683,7 +4685,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (expand != null &&
(expand.content || unmetered || (expand.size != null && expand.size < download)))
iProperties.setExpanded(expand, true);
iProperties.setExpanded(expand, true, false);
}
// Auto expand all seen messages
@ -4695,7 +4697,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
!message.duplicate &&
!EntityFolder.DRAFTS.equals(message.folderType) &&
!EntityFolder.TRASH.equals(message.folderType))
iProperties.setExpanded(message, true);
iProperties.setExpanded(message, true, false);
} else {
if (autoCloseCount > 0 && (autoclose || onclose != null)) {
List<MessageTarget> mt = new ArrayList<>();

Loading…
Cancel
Save