mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-18 02:08:20 +00:00
Reporting range of visible tasks
Also fixes task position being incorrectly reported specifically for swipe events due to using stale getCurrentPage(). Bug: 72222505 Test: Manual Change-Id: Ic79b67f8a6ffbfabc397b411b14afc309405197e
This commit is contained in:
@@ -1307,10 +1307,11 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
|
||||
super.onInitializeAccessibilityEvent(event);
|
||||
|
||||
if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) {
|
||||
final int visiblePageNumber = getChildCount() - getCurrentPage() - 1;
|
||||
event.setFromIndex(visiblePageNumber);
|
||||
event.setToIndex(visiblePageNumber);
|
||||
event.setItemCount(getChildCount());
|
||||
final int childCount = getChildCount();
|
||||
final int[] visibleTasks = getVisibleChildrenRange();
|
||||
event.setFromIndex(childCount - visibleTasks[1] - 1);
|
||||
event.setToIndex(childCount - visibleTasks[0] - 1);
|
||||
event.setItemCount(childCount);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -152,6 +152,8 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
// Similar to the platform implementation of isLayoutValid();
|
||||
protected boolean mIsLayoutValid;
|
||||
|
||||
private int[] mTmpIntPair = new int[2];
|
||||
|
||||
public PagedView(Context context) {
|
||||
this(context, null);
|
||||
}
|
||||
@@ -1600,4 +1602,33 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
|
||||
|
||||
boolean shouldIncludeView(View view);
|
||||
}
|
||||
|
||||
public int[] getVisibleChildrenRange() {
|
||||
float visibleLeft = 0;
|
||||
float visibleRight = visibleLeft + getMeasuredWidth();
|
||||
float scaleX = getScaleX();
|
||||
if (scaleX < 1 && scaleX > 0) {
|
||||
float mid = getMeasuredWidth() / 2;
|
||||
visibleLeft = mid - ((mid - visibleLeft) / scaleX);
|
||||
visibleRight = mid + ((visibleRight - mid) / scaleX);
|
||||
}
|
||||
|
||||
int leftChild = -1;
|
||||
int rightChild = -1;
|
||||
final int childCount = getChildCount();
|
||||
for (int i = 0; i < childCount; i++) {
|
||||
final View child = getPageAt(i);
|
||||
|
||||
float left = child.getLeft() + child.getTranslationX() - getScrollX();
|
||||
if (left <= visibleRight && (left + child.getMeasuredWidth()) >= visibleLeft) {
|
||||
if (leftChild == -1) {
|
||||
leftChild = i;
|
||||
}
|
||||
rightChild = i;
|
||||
}
|
||||
}
|
||||
mTmpIntPair[0] = leftChild;
|
||||
mTmpIntPair[1] = rightChild;
|
||||
return mTmpIntPair;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1381,28 +1381,9 @@ public class Workspace extends PagedView<WorkspacePageIndicator>
|
||||
if (mChildrenLayersEnabled) {
|
||||
final int screenCount = getChildCount();
|
||||
|
||||
float visibleLeft = 0;
|
||||
float visibleRight = visibleLeft + getMeasuredWidth();
|
||||
float scaleX = getScaleX();
|
||||
if (scaleX < 1 && scaleX > 0) {
|
||||
float mid = getMeasuredWidth() / 2;
|
||||
visibleLeft = mid - ((mid - visibleLeft) / scaleX);
|
||||
visibleRight = mid + ((visibleRight - mid) / scaleX);
|
||||
}
|
||||
|
||||
int leftScreen = -1;
|
||||
int rightScreen = -1;
|
||||
for (int i = 0; i < screenCount; i++) {
|
||||
final View child = getPageAt(i);
|
||||
|
||||
float left = child.getLeft() + child.getTranslationX() - getScrollX();
|
||||
if (left <= visibleRight && (left + child.getMeasuredWidth()) >= visibleLeft) {
|
||||
if (leftScreen == -1) {
|
||||
leftScreen = i;
|
||||
}
|
||||
rightScreen = i;
|
||||
}
|
||||
}
|
||||
final int[] visibleScreens = getVisibleChildrenRange();
|
||||
int leftScreen = visibleScreens[0];
|
||||
int rightScreen = visibleScreens[1];
|
||||
if (mForceDrawAdjacentPages) {
|
||||
// In overview mode, make sure that the two side pages are visible.
|
||||
leftScreen = Utilities.boundToRange(getCurrentPage() - 1, 0, rightScreen);
|
||||
|
||||
Reference in New Issue
Block a user