diff options
author | Christian Schneppe <christian@pix-art.de> | 2016-05-22 19:42:43 +0200 |
---|---|---|
committer | Christian Schneppe <christian@pix-art.de> | 2016-05-22 19:42:43 +0200 |
commit | ca34be385e8c1e414dab4b49080087dffa85f876 (patch) | |
tree | 97a0ceeeca0b2512919492317db8412becbef8fa /src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | |
parent | 73a02abfd73da1ca5f5f9ed6c0c7c287371d0d25 (diff) | |
parent | abbdf232c6f27a00edaa9af5937f9d022ad15f65 (diff) |
Merge remote-tracking branch 'refs/remotes/siacs/master'
Diffstat (limited to 'src/main/java/eu/siacs/conversations/ui/ConversationFragment.java')
-rw-r--r-- | src/main/java/eu/siacs/conversations/ui/ConversationFragment.java | 55 |
1 files changed, 31 insertions, 24 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 04c3d82df..014fedd39 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -123,27 +123,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } - private int getIndexOf(String uuid, List<Message> messages) { - if (uuid == null) { - return messages.size() - 1; - } - for(int i = 0; i < messages.size(); ++i) { - if (uuid.equals(messages.get(i).getUuid())) { - return i; - } else { - Message next = messages.get(i); - while(next != null && next.wasMergedIntoPrevious()) { - if (uuid.equals(next.getUuid())) { - return i; - } - next = next.next(); - } - - } - } - return 0; - } - @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { @@ -212,6 +191,28 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } } }; + + private int getIndexOf(String uuid, List<Message> messages) { + if (uuid == null) { + return messages.size() - 1; + } + for(int i = 0; i < messages.size(); ++i) { + if (uuid.equals(messages.get(i).getUuid())) { + return i; + } else { + Message next = messages.get(i); + while(next != null && next.wasMergedIntoPrevious()) { + if (uuid.equals(next.getUuid())) { + return i; + } + next = next.next(); + } + + } + } + return 0; + } + private final int KEYCHAIN_UNLOCK_NOT_REQUIRED = 0; private final int KEYCHAIN_UNLOCK_REQUIRED = 1; private final int KEYCHAIN_UNLOCK_PENDING = 2; @@ -807,9 +808,15 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa this.messagesView.setAdapter(messageListAdapter); updateMessages(); this.messagesLoaded = true; - int size = this.messageList.size(); - if (size > 0) { - messagesView.setSelection(size - 1); + synchronized (this.messageList) { + final Message first = conversation.getFirstUnreadMessage(); + final int pos; + if (first == null) { + pos = Math.max(0,this.messageList.size() - 1); + } else { + pos = getIndexOf(first.getUuid(), this.messageList); + } + messagesView.setSelection(pos); } } |