Prevent long press from leaking into header gesture detector

master
M66B 3 weeks ago
parent 8ef55ae3da
commit 935114fc4c

@ -389,6 +389,8 @@ public class FragmentMessages extends FragmentBase
private boolean scrolling = false;
private boolean navigating = false;
private GestureDetector gestureDetector;
private AdapterMessage adapter;
private AdapterMessage.ViewType viewType;
@ -1196,15 +1198,12 @@ public class FragmentMessages extends FragmentBase
};
rvMessage.addItemDecoration(dateDecorator);
rvMessage.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
private final GestureDetector gestureDetector =
gestureDetector =
new GestureDetector(getContext(), new GestureDetector.SimpleOnGestureListener() {
@Override
public void onLongPress(@NonNull MotionEvent e) {
if (!getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.STARTED))
return;
if (swiping)
return;
int x = Math.round(e.getX());
int y = Math.round(e.getY());
@ -1257,6 +1256,7 @@ public class FragmentMessages extends FragmentBase
}
});
rvMessage.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
@Override
public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
gestureDetector.onTouchEvent(e);
@ -3282,6 +3282,7 @@ public class FragmentMessages extends FragmentBase
@Override
public void run() {
swiping = false;
gestureDetector.setIsLongpressEnabled(true);
Log.i("Swiping ended");
}
};
@ -3292,6 +3293,7 @@ public class FragmentMessages extends FragmentBase
getMainHandler().removeCallbacks(disableSwiping);
if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
swiping = true;
gestureDetector.setIsLongpressEnabled(false);
Log.i("Swiping started");
} else
getMainHandler().postDelayed(disableSwiping, ViewConfiguration.getLongPressTimeout() + 100);

Loading…
Cancel
Save