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

Commit ef89f1a7 authored by Brian Isganitis's avatar Brian Isganitis
Browse files

Reapply "Have backup TouchController of Taskbar All Apps AFV."

This reverts commit 73c695f04e2aff3ef90f89668ee563bcf1fc3a29.

Change-Id: I21f560be9d340d1c343467c1704063ce85f63056
Fix: 299165179
Test: Manual + TaplTestsTaskbarSearch
Flag: ENABLE_ALL_APPS_SEARCH_IN_TASKBAR
parent a7e47717
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -174,6 +174,9 @@ public final class TaskbarAllAppsController {

        mSlideInView = (TaskbarAllAppsSlideInView) mOverlayContext.getLayoutInflater().inflate(
                R.layout.taskbar_all_apps_sheet, mOverlayContext.getDragLayer(), false);
        // Ensures All Apps gets touch events in case it is not the top floating view. Floating
        // views above it may not be able to intercept the touch, so All Apps should try to.
        mOverlayContext.getDragLayer().addTouchController(mSlideInView);
        mSlideInView.addOnCloseListener(() -> {
            mControllers.getSharedState().allAppsVisible = false;
            cleanUpOverlay();
@@ -212,6 +215,7 @@ public final class TaskbarAllAppsController {
            mSearchSessionController = null;
        }
        if (mOverlayContext != null) {
            mOverlayContext.getDragLayer().removeTouchController(mSlideInView);
            mOverlayContext.setSearchSessionController(null);
            mOverlayContext = null;
        }
+3 −1
Original line number Diff line number Diff line
@@ -220,7 +220,9 @@ public class TaskbarAllAppsSlideInView extends AbstractSlideInView<TaskbarOverla
    @Override
    public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            mNoIntercept = !mAppsView.shouldContainerScroll(ev);
            mNoIntercept = !mAppsView.shouldContainerScroll(ev)
                    || getTopOpenViewWithType(
                            mActivityContext, TYPE_ACCESSIBLE & ~TYPE_TASKBAR_ALL_APPS) != null;
        }
        return super.onControllerInterceptTouchEvent(ev);
    }
+21 −4
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.TouchController;
import com.android.launcher3.views.BaseDragLayer;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

@@ -69,6 +70,7 @@ public class TaskbarOverlayDragLayer extends
            return true;
        }
    };
    private final List<TouchController> mTouchControllers = new ArrayList<>();

    TaskbarOverlayDragLayer(Context context) {
        super(context, null, 1);
@@ -93,10 +95,13 @@ public class TaskbarOverlayDragLayer extends

    @Override
    public void recreateControllers() {
        mControllers = mOnClickListeners.isEmpty()
                ? new TouchController[]{mActivity.getDragController()}
                : new TouchController[] {
                        mActivity.getDragController(), mClickListenerTouchController};
        List<TouchController> controllers = new ArrayList<>();
        controllers.add(mActivity.getDragController());
        controllers.addAll(mTouchControllers);
        if (!mOnClickListeners.isEmpty()) {
            controllers.add(mClickListenerTouchController);
        }
        mControllers = controllers.toArray(new TouchController[0]);
    }

    @Override
@@ -183,6 +188,18 @@ public class TaskbarOverlayDragLayer extends
        });
    }

    /** Adds a {@link TouchController} to this drag layer. */
    public void addTouchController(@NonNull TouchController touchController) {
        mTouchControllers.add(touchController);
        recreateControllers();
    }

    /** Removes a {@link TouchController} from this drag layer. */
    public void removeTouchController(@NonNull TouchController touchController) {
        mTouchControllers.remove(touchController);
        recreateControllers();
    }

    /**
     * Taskbar automatically stashes when opening all apps, but we don't report the insets as
     * changing to avoid moving the underlying app. But internally, the apps view should still