Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2bb51344 authored by Andras Kloczl's avatar Andras Kloczl
Browse files

Fix widget scrolling issue on right panel

Since we added support for multiple panels on the home screen,
we need to call cancelLongPress on all the visible pages not
just on the leftmost visible page.

Test: manual
Bug: 178582378
Change-Id: I88ded543a16b1bbf2a53a627e5725f68b42e742b
parent f3814eea
Loading
Loading
Loading
Loading
+17 −4
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import com.android.launcher3.util.Thunk;
import com.android.launcher3.views.ActivityContext;

import java.util.ArrayList;
import java.util.List;

/**
 * An abstraction of the original Workspace which supports browsing through a
@@ -303,6 +304,21 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
        return 1;
    }

    /**
     * Returns the currently visible pages.
     */
    protected Iterable<View> getVisiblePages() {
        int panelCount = getPanelCount();
        List<View> visiblePages = new ArrayList<>(panelCount);
        for (int i = mCurrentPage; i < mCurrentPage + panelCount; i++) {
            View page = getPageAt(i);
            if (page != null) {
                visiblePages.add(page);
            }
        }
        return visiblePages;
    }

    /**
     * Returns true if the view is on one of the current pages, false otherwise.
     */
@@ -1052,10 +1068,7 @@ public abstract class PagedView<T extends View & PageIndicator> extends ViewGrou
        // Try canceling the long press. It could also have been scheduled
        // by a distant descendant, so use the mAllowLongPress flag to block
        // everything
        final View currentPage = getPageAt(mCurrentPage);
        if (currentPage != null) {
            currentPage.cancelLongPress();
        }
        getVisiblePages().forEach(View::cancelLongPress);
    }

    protected float getScrollProgress(int screenCenter, View v, int page) {