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
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index 1555e98..20f5f9b 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -1087,26 +1087,25 @@
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 boolean scrollLeft() {
if (getNextPage() > 0) {
- snapToPage(getNextPage() - 1);
+ snapToPage(getNextPage() - getPanelCount());
return true;
}
return mAllowOverScroll;
@@ -1657,7 +1656,7 @@
public boolean scrollRight() {
if (getNextPage() < getChildCount() - 1) {
- snapToPage(getNextPage() + 1);
+ snapToPage(getNextPage() + getPanelCount());
return true;
}
return mAllowOverScroll;