From 77b3eb0acbdd990912eddcf6dee45675c6b4af65 Mon Sep 17 00:00:00 2001 From: Andras Kloczl Date: Thu, 15 Jul 2021 11:15:24 +0200 Subject: [PATCH] Fix two panel accessibility issues When two panel home was enabled in Launcher the items on the left panel weren't able to get selected while on Talkback because of an incorrect calculation in getScrollProgress. Also the user was unable to jump to other workspaces by doing simple one finger swipes because the page jump count was only 1. Test: manual Bug: 174464170 Change-Id: I6cfe39b5059e8e7e7a32c9b0d372c658e796c3e8 --- src/com/android/launcher3/PagedView.java | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java index 1555e98eae..20f5f9bb60 100644 --- a/src/com/android/launcher3/PagedView.java +++ b/src/com/android/launcher3/PagedView.java @@ -1087,26 +1087,25 @@ public abstract class PagedView extends ViewGrou protected float getScrollProgress(int screenCenter, View v, int page) { final int halfScreenSize = getMeasuredWidth() / 2; - int delta = screenCenter - (getScrollForPage(page) + halfScreenSize); - int count = getChildCount(); + int panelCount = getPanelCount(); + int pageCount = getChildCount(); - final int totalDistance; - - int adjacentPage = page + 1; + int adjacentPage = page + panelCount; if ((delta < 0 && !mIsRtl) || (delta > 0 && mIsRtl)) { - adjacentPage = page - 1; + adjacentPage = page - panelCount; } - if (adjacentPage < 0 || adjacentPage > count - 1) { - totalDistance = v.getMeasuredWidth() + mPageSpacing; + final int totalDistance; + if (adjacentPage < 0 || adjacentPage > pageCount - 1) { + totalDistance = (v.getMeasuredWidth() + mPageSpacing) * panelCount; } else { totalDistance = Math.abs(getScrollForPage(adjacentPage) - getScrollForPage(page)); } float scrollProgress = delta / (totalDistance * 1.0f); scrollProgress = Math.min(scrollProgress, MAX_SCROLL_PROGRESS); - scrollProgress = Math.max(scrollProgress, - MAX_SCROLL_PROGRESS); + scrollProgress = Math.max(scrollProgress, -MAX_SCROLL_PROGRESS); return scrollProgress; } @@ -1649,7 +1648,7 @@ public abstract class PagedView extends ViewGrou public boolean scrollLeft() { if (getNextPage() > 0) { - snapToPage(getNextPage() - 1); + snapToPage(getNextPage() - getPanelCount()); return true; } return mAllowOverScroll; @@ -1657,7 +1656,7 @@ public abstract class PagedView extends ViewGrou public boolean scrollRight() { if (getNextPage() < getChildCount() - 1) { - snapToPage(getNextPage() + 1); + snapToPage(getNextPage() + getPanelCount()); return true; } return mAllowOverScroll;