Loading app/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt +22 −8 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ class MessageListFragment : private lateinit var fragmentListener: MessageListFragmentListener private var recyclerView: RecyclerView? = null private var itemTouchHelper: ItemTouchHelper? = null private var swipeRefreshLayout: SwipeRefreshLayout? = null private lateinit var adapter: MessageListAdapter Loading Loading @@ -278,6 +279,7 @@ class MessageListFragment : recyclerView.adapter = adapter this.recyclerView = recyclerView this.itemTouchHelper = itemTouchHelper } private fun initializeSortSettings() { Loading Loading @@ -421,6 +423,7 @@ class MessageListFragment : override fun onDestroyView() { recyclerView = null itemTouchHelper = null swipeRefreshLayout = null if (isNewMessagesView && !requireActivity().isChangingConfigurations) { Loading Loading @@ -1108,8 +1111,25 @@ class MessageListFragment : override fun doNegativeClick(dialogId: Int) { if (dialogId == R.id.dialog_confirm_spam || dialogId == R.id.dialog_confirm_delete) { // No further need for this reference activeMessages = null val activeMessages = this.activeMessages ?: return if (activeMessages.size == 1) { // List item might have been swiped and is still showing the "swipe action background" resetSwipedView(activeMessages.first()) } this.activeMessages = null } } private fun resetSwipedView(messageReference: MessageReference) { val recyclerView = this.recyclerView ?: return val itemTouchHelper = this.itemTouchHelper ?: return adapter.getItem(messageReference)?.let { messageListItem -> recyclerView.findViewHolderForItemId(messageListItem.uniqueId)?.let { viewHolder -> itemTouchHelper.stopSwipe(viewHolder) notifyItemChanged(messageListItem) } } } Loading Loading @@ -1491,15 +1511,9 @@ class MessageListFragment : onArchive(item.messageReference) } SwipeAction.Delete -> { if (K9.isConfirmDelete) { notifyItemChanged(item) } onDelete(listOf(item.messageReference)) } SwipeAction.Spam -> { if (K9.isConfirmSpam) { notifyItemChanged(item) } onSpam(listOf(item.messageReference)) } SwipeAction.Move -> { Loading ui-utils/ItemTouchHelper/src/main/java/app/k9mail/ui/utils/itemtouchhelper/ItemTouchHelper.java +8 −0 Original line number Diff line number Diff line Loading @@ -938,6 +938,10 @@ public class ItemTouchHelper extends RecyclerView.ItemDecoration @Override public void onChildViewDetachedFromWindow(@NonNull View view) { resetSwipeView(view); } private void resetSwipeView(@NonNull View view) { removeChildDrawingOrderCallbackIfNecessary(view); final ViewHolder holder = mRecyclerView.getChildViewHolder(view); if (holder == null) { Loading @@ -953,6 +957,10 @@ public class ItemTouchHelper extends RecyclerView.ItemDecoration } } public void stopSwipe(@NonNull ViewHolder viewHolder) { resetSwipeView(viewHolder.itemView); } /** * Returns the animation type or 0 if cannot be found. */ Loading Loading
app/ui/legacy/src/main/java/com/fsck/k9/ui/messagelist/MessageListFragment.kt +22 −8 Original line number Diff line number Diff line Loading @@ -76,6 +76,7 @@ class MessageListFragment : private lateinit var fragmentListener: MessageListFragmentListener private var recyclerView: RecyclerView? = null private var itemTouchHelper: ItemTouchHelper? = null private var swipeRefreshLayout: SwipeRefreshLayout? = null private lateinit var adapter: MessageListAdapter Loading Loading @@ -278,6 +279,7 @@ class MessageListFragment : recyclerView.adapter = adapter this.recyclerView = recyclerView this.itemTouchHelper = itemTouchHelper } private fun initializeSortSettings() { Loading Loading @@ -421,6 +423,7 @@ class MessageListFragment : override fun onDestroyView() { recyclerView = null itemTouchHelper = null swipeRefreshLayout = null if (isNewMessagesView && !requireActivity().isChangingConfigurations) { Loading Loading @@ -1108,8 +1111,25 @@ class MessageListFragment : override fun doNegativeClick(dialogId: Int) { if (dialogId == R.id.dialog_confirm_spam || dialogId == R.id.dialog_confirm_delete) { // No further need for this reference activeMessages = null val activeMessages = this.activeMessages ?: return if (activeMessages.size == 1) { // List item might have been swiped and is still showing the "swipe action background" resetSwipedView(activeMessages.first()) } this.activeMessages = null } } private fun resetSwipedView(messageReference: MessageReference) { val recyclerView = this.recyclerView ?: return val itemTouchHelper = this.itemTouchHelper ?: return adapter.getItem(messageReference)?.let { messageListItem -> recyclerView.findViewHolderForItemId(messageListItem.uniqueId)?.let { viewHolder -> itemTouchHelper.stopSwipe(viewHolder) notifyItemChanged(messageListItem) } } } Loading Loading @@ -1491,15 +1511,9 @@ class MessageListFragment : onArchive(item.messageReference) } SwipeAction.Delete -> { if (K9.isConfirmDelete) { notifyItemChanged(item) } onDelete(listOf(item.messageReference)) } SwipeAction.Spam -> { if (K9.isConfirmSpam) { notifyItemChanged(item) } onSpam(listOf(item.messageReference)) } SwipeAction.Move -> { Loading
ui-utils/ItemTouchHelper/src/main/java/app/k9mail/ui/utils/itemtouchhelper/ItemTouchHelper.java +8 −0 Original line number Diff line number Diff line Loading @@ -938,6 +938,10 @@ public class ItemTouchHelper extends RecyclerView.ItemDecoration @Override public void onChildViewDetachedFromWindow(@NonNull View view) { resetSwipeView(view); } private void resetSwipeView(@NonNull View view) { removeChildDrawingOrderCallbackIfNecessary(view); final ViewHolder holder = mRecyclerView.getChildViewHolder(view); if (holder == null) { Loading @@ -953,6 +957,10 @@ public class ItemTouchHelper extends RecyclerView.ItemDecoration } } public void stopSwipe(@NonNull ViewHolder viewHolder) { resetSwipeView(viewHolder.itemView); } /** * Returns the animation type or 0 if cannot be found. */ Loading