Fixed swipe/action in some cases

This commit is contained in:
M66B 2024-04-13 17:58:44 +02:00
parent 6ce4c32bbe
commit ccd32b15ca
1 changed files with 17 additions and 6 deletions

View File

@ -3267,8 +3267,18 @@ public class FragmentMessages extends FragmentBase
" folder=" + message.folderType); " folder=" + message.folderType);
if (EntityMessage.SWIPE_ACTION_ASK.equals(action)) { if (EntityMessage.SWIPE_ACTION_ASK.equals(action)) {
redraw(null); rvMessage.addOnChildAttachStateChangeListener(new RecyclerView.OnChildAttachStateChangeListener() {
onSwipeAsk(message, viewHolder); @Override
public void onChildViewAttachedToWindow(@NonNull View view) {
rvMessage.removeOnChildAttachStateChangeListener(this);
onSwipeAsk(message, view);
}
@Override
public void onChildViewDetachedFromWindow(@NonNull View view) {
}
});
redraw(viewHolder);
} else if (EntityMessage.SWIPE_ACTION_SEEN.equals(action)) { } else if (EntityMessage.SWIPE_ACTION_SEEN.equals(action)) {
redraw(viewHolder); redraw(viewHolder);
onActionSeenSelection(!message.ui_seen, message.id, false); onActionSeenSelection(!message.ui_seen, message.id, false);
@ -3369,14 +3379,14 @@ public class FragmentMessages extends FragmentBase
}); });
} }
private void onSwipeAsk(final @NonNull TupleMessageEx message, @NonNull RecyclerView.ViewHolder viewHolder) { private void onSwipeAsk(final @NonNull TupleMessageEx message, @NonNull View anchor) {
// Make sure animations are done // Make sure animations are done
rvMessage.post(new Runnable() { rvMessage.post(new Runnable() {
@Override @Override
public void run() { public void run() {
try { try {
int order = 1; int order = 1;
PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(getContext(), getViewLifecycleOwner(), viewHolder.itemView); PopupMenuLifecycle popupMenu = new PopupMenuLifecycle(getContext(), getViewLifecycleOwner(), anchor);
if (message.ui_seen) if (message.ui_seen)
popupMenu.getMenu().add(Menu.NONE, R.string.title_unseen, order++, R.string.title_unseen) popupMenu.getMenu().add(Menu.NONE, R.string.title_unseen, order++, R.string.title_unseen)
@ -3470,7 +3480,7 @@ public class FragmentMessages extends FragmentBase
onSwipeJunk(message); onSwipeJunk(message);
return true; return true;
} else if (itemId == R.string.title_delete_permanently) { } else if (itemId == R.string.title_delete_permanently) {
onSwipeDelete(message, viewHolder); onSwipeDelete(message, null);
return true; return true;
} }
return false; return false;
@ -3632,7 +3642,8 @@ public class FragmentMessages extends FragmentBase
return; return;
} }
redraw(vh); if (vh != null)
redraw(vh);
FragmentDialogAsk ask = new FragmentDialogAsk(); FragmentDialogAsk ask = new FragmentDialogAsk();
ask.setArguments(args); ask.setArguments(args);