diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index adcd469a6e0b9a1b8bdedf8ed789ad03e3f9fde7..8b35e5a25296bf3e846d30889848c6a4e925bfec 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -19,6 +19,7 @@ import android.view.MotionEvent; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; +import android.widget.AbsListView; import android.widget.ArrayAdapter; import android.widget.AdapterView; import android.widget.CompoundButton; @@ -2558,12 +2559,16 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl if (childView instanceof ViewGroup) { childView = findViewAt((ViewGroup) childView, location[0] + e.getX(), location[1] + e.getY()); } - if ((childView instanceof ListView && ((ListView) childView).canScrollList(1)) || childView instanceof WebView) { - int action = e.getAction(); - switch (action) { - case MotionEvent.ACTION_DOWN: + int action = e.getAction(); + switch (action) { + case MotionEvent.ACTION_DOWN: + if ((childView instanceof AbsListView && ((AbsListView) childView).canScrollList(1)) || childView instanceof WebView) { rv.requestDisallowInterceptTouchEvent(true); - } + } + case MotionEvent.ACTION_UP: + if ((childView instanceof AbsListView && ((AbsListView) childView).canScrollList(-11)) || childView instanceof WebView) { + rv.requestDisallowInterceptTouchEvent(true); + } } } @@ -2592,7 +2597,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl private View findViewAt(ViewGroup viewGroup, float x, float y) { for(int i = 0; i < viewGroup.getChildCount(); i++) { View child = viewGroup.getChildAt(i); - if (child instanceof ViewGroup && !(child instanceof ListView) && !(child instanceof WebView)) { + if (child instanceof ViewGroup && !(child instanceof AbsListView) && !(child instanceof WebView)) { View foundView = findViewAt((ViewGroup) child, x, y); if (foundView != null && foundView.isShown()) { return foundView;