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
This commit is contained in:
Andras Kloczl
2021-07-15 11:15:24 +02:00
parent e23dd92a55
commit 77b3eb0acb

View File

@@ -1087,26 +1087,25 @@ public abstract class PagedView<T extends View & PageIndicator> 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<T extends View & PageIndicator> 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<T extends View & PageIndicator> extends ViewGrou
public boolean scrollRight() {
if (getNextPage() < getChildCount() - 1) {
snapToPage(getNextPage() + 1);
snapToPage(getNextPage() + getPanelCount());
return true;
}
return mAllowOverScroll;