Dbrant has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/190820

Change subject: Fix scrolling when tapping and dragging over lead image.
......................................................................

Fix scrolling when tapping and dragging over lead image.

Bug: T87128
Change-Id: Ie32524661c4d5408cc17489898074c5bceab33be
---
M wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
1 file changed, 45 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/20/190820/1

diff --git 
a/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java 
b/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
index 6b23fab..0f59384 100644
--- 
a/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
+++ 
b/wikipedia/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
@@ -10,7 +10,9 @@
 import android.text.TextUtils;
 import android.util.TypedValue;
 import android.graphics.PointF;
+import android.view.MotionEvent;
 import android.view.View;
+import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.animation.Animation;
 import android.view.animation.Transformation;
@@ -32,6 +34,7 @@
 import org.wikipedia.WikipediaApp;
 import org.wikipedia.bridge.CommunicationBridge;
 import org.wikipedia.page.PageViewFragmentInternal;
+import org.wikipedia.views.ClickOrScrollHandler;
 import org.wikipedia.views.ObservableWebView;
 
 public class LeadImagesHandler implements 
ObservableWebView.OnScrollChangeListener, ImageViewWithFace.OnImageLoadListener 
{
@@ -136,16 +139,50 @@
                     .getWindowManager().getDefaultDisplay().getHeight() / 
displayDensity);
         }
 
-        image1.setOnClickListener(new View.OnClickListener() {
+        // set up pass-through scroll functionality for the ListView
+        image1.setOnTouchListener(new View.OnTouchListener() {
+            private int touchSlop = 
ViewConfiguration.get(context).getScaledTouchSlop();
+            private boolean slopReached;
+            private boolean isPressed = false;
+            private float startY;
+            private float amountScrolled;
             @Override
-            public void onClick(View v) {
-                String imageName = 
parentFragment.getPage().getPageProperties().getLeadImageName();
-                if (imageName == null) {
-                    return;
+            public boolean onTouch(View v, MotionEvent event) {
+                int action = event.getActionMasked() & MotionEvent.ACTION_MASK;
+                switch (action) {
+                    case MotionEvent.ACTION_DOWN:
+                        isPressed = true;
+                        startY = event.getY();
+                        amountScrolled = 0;
+                        slopReached = false;
+                        return true;
+                    case MotionEvent.ACTION_MOVE:
+                        if (isPressed) {
+                            int scrollAmount = Math.max((int) (startY - 
event.getY()), -webView.getScrollY());
+                            // manually scroll the WebView that's underneath 
us...
+                            webView.scrollBy(0, scrollAmount);
+                            amountScrolled += scrollAmount;
+                            if (Math.abs(amountScrolled) > touchSlop && 
!slopReached) {
+                                slopReached = true;
+                            }
+                        }
+                        break;
+                    case MotionEvent.ACTION_UP:
+                        isPressed = false;
+                        String imageName = 
parentFragment.getPage().getPageProperties().getLeadImageName();
+                        if (!slopReached && imageName != null) {
+                            PageTitle imageTitle = new PageTitle("File:" + 
imageName,
+                                                       
parentFragment.getTitle().getSite());
+                            parentFragment.showImageGallery(imageTitle);
+                        }
+                        break;
+                    case MotionEvent.ACTION_CANCEL:
+                        isPressed = false;
+                        break;
+                    default:
+                        break;
                 }
-                PageTitle imageTitle = new PageTitle("File:" + imageName,
-                                                     
parentFragment.getTitle().getSite());
-                parentFragment.showImageGallery(imageTitle);
+                return false;
             }
         });
 

-- 
To view, visit https://gerrit.wikimedia.org/r/190820
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie32524661c4d5408cc17489898074c5bceab33be
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to