From 0843db71cef5cd375d4255c777a98a8648006304 Mon Sep 17 00:00:00 2001 From: iNPUTmice Date: Wed, 8 Apr 2015 13:04:50 +0200 Subject: maintain scroll position after undo --- .../java/eu/siacs/conversations/ui/ConversationActivity.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 82939355..e771e6dc 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -183,13 +183,19 @@ public class ConversationActivity extends XmppActivity listView.setDismissCallback(new EnhancedListView.OnDismissCallback() { @Override - public EnhancedListView.Undoable onDismiss(EnhancedListView enhancedListView, final int position) { + public EnhancedListView.Undoable onDismiss(final EnhancedListView enhancedListView, final int position) { boolean formerlySelected; + + final int index = listView.getFirstVisiblePosition(); + View v = listView.getChildAt(0); + swipedConversation = listAdapter.getItem(position); listAdapter.remove(swipedConversation); swipedConversation.markRead(); + final int top = (v == null) ? 0 : (v.getTop() - listView.getPaddingTop()); + if (position == 0 && listAdapter.getCount() == 0) { endConversation(swipedConversation, false, true); return null; @@ -214,6 +220,8 @@ public class ConversationActivity extends XmppActivity .reInit(getSelectedConversation()); } swipedConversation = null; + listView.setSelectionFromTop(index + (listView.getChildCount() < position ? 1 : 0), top); + } @Override -- cgit v1.2.3