From 5e490376f4ddd89ac73bdb2192290ac6592f6ea3 Mon Sep 17 00:00:00 2001 From: Ahmed El herz Date: Fri, 24 May 2024 00:12:43 +0100 Subject: [PATCH] Fix initial event not triggering onTouchEvent. Fixes #13351 --- .../stickers/StickerRolloverTouchListener.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerRolloverTouchListener.java b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerRolloverTouchListener.java index c858a85c63..7648f1bb34 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerRolloverTouchListener.java +++ b/app/src/main/java/org/thoughtcrime/securesms/stickers/StickerRolloverTouchListener.java @@ -41,6 +41,9 @@ public class StickerRolloverTouchListener implements RecyclerView.OnItemTouchLis @Override public boolean onInterceptTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) { + if (hoverMode && motionEvent.getAction() == MotionEvent.ACTION_UP) + exitHoverMode(); + return hoverMode; } @@ -49,10 +52,7 @@ public class StickerRolloverTouchListener implements RecyclerView.OnItemTouchLis switch (motionEvent.getAction()) { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: - hoverMode = false; - popup.dismiss(); - eventListener.onStickerPopupEnded(); - currentView.clear(); + exitHoverMode(); break; default: for (int i = 0, len = recyclerView.getChildCount(); i < len; i++) { @@ -84,6 +84,13 @@ public class StickerRolloverTouchListener implements RecyclerView.OnItemTouchLis showSticker(recyclerView, sticker.getUri(), sticker.getStickerRecord().getEmoji()); } + private void exitHoverMode() { + hoverMode = false; + popup.dismiss(); + eventListener.onStickerPopupEnded(); + currentView.clear(); + } + private void showStickerForView(@NonNull RecyclerView recyclerView, @NonNull View view) { Pair stickerData = stickerRetriever.getStickerDataFromView(view);