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

Commit 33ce1cf6 authored by Schneider Victor-tulias's avatar Schneider Victor-tulias Committed by Android (Google) Code Review
Browse files

Merge "Remove KQS touch handling outside its bounds" into main

parents 3acd0708 e724cb8e
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -32,7 +32,6 @@ import androidx.annotation.Nullable;
import com.android.launcher3.Utilities;
import com.android.launcher3.anim.AnimatorListeners;
import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext;
import com.android.launcher3.taskbar.overlay.TaskbarOverlayDragLayer;
import com.android.quickstep.SystemUiProxy;
import com.android.quickstep.util.GroupTask;
import com.android.quickstep.util.SlideInRemoteTransition;
@@ -84,9 +83,7 @@ public class KeyboardQuickSwitchViewController {
            boolean updateTasks,
            int currentFocusIndexOverride,
            boolean onDesktop) {
        TaskbarOverlayDragLayer dragLayer = mOverlayContext.getDragLayer();
        dragLayer.addView(mKeyboardQuickSwitchView);
        dragLayer.runOnClickOnce(v -> closeQuickSwitchView(true));
        mOverlayContext.getDragLayer().addView(mKeyboardQuickSwitchView);
        mOnDesktop = onDesktop;

        mKeyboardQuickSwitchView.applyLoadPlan(
+0 −71
Original line number Diff line number Diff line
@@ -40,7 +40,6 @@ import com.android.launcher3.views.BaseDragLayer;

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

/** Root drag layer for the Taskbar overlay window. */
public class TaskbarOverlayDragLayer extends
@@ -48,28 +47,6 @@ public class TaskbarOverlayDragLayer extends
        ViewTreeObserver.OnComputeInternalInsetsListener {

    private SafeCloseable mViewCaptureCloseable;
    private final List<OnClickListener> mOnClickListeners = new CopyOnWriteArrayList<>();
    private final TouchController mClickListenerTouchController = new TouchController() {
        @Override
        public boolean onControllerTouchEvent(MotionEvent ev) {
            if (ev.getActionMasked() == MotionEvent.ACTION_UP) {
                for (OnClickListener listener : mOnClickListeners) {
                    listener.onClick(TaskbarOverlayDragLayer.this);
                }
            }
            return false;
        }

        @Override
        public boolean onControllerInterceptTouchEvent(MotionEvent ev) {
            for (int i = 0; i < getChildCount(); i++) {
                if (isEventOverView(getChildAt(i), ev)) {
                    return false;
                }
            }
            return true;
        }
    };
    private final List<TouchController> mTouchControllers = new ArrayList<>();

    TaskbarOverlayDragLayer(Context context) {
@@ -98,9 +75,6 @@ public class TaskbarOverlayDragLayer extends
        List<TouchController> controllers = new ArrayList<>();
        controllers.add(mActivity.getDragController());
        controllers.addAll(mTouchControllers);
        if (!mOnClickListeners.isEmpty()) {
            controllers.add(mClickListenerTouchController);
        }
        mControllers = controllers.toArray(new TouchController[0]);
    }

@@ -152,51 +126,6 @@ public class TaskbarOverlayDragLayer extends
        mActivity.getOverlayController().maybeCloseWindow();
    }

    /**
     * Adds the given callback to clicks to this drag layer.
     * <p>
     * Clicks are only accepted on this drag layer if they fall within this drag layer's bounds and
     * outside the bounds of all child views.
     * <p>
     * If the click falls within the bounds of a child view, then this callback does not run and
     * that child can optionally handle it.
     */
    private void addOnClickListener(@NonNull OnClickListener listener) {
        boolean wasEmpty = mOnClickListeners.isEmpty();
        mOnClickListeners.add(listener);
        if (wasEmpty) {
            recreateControllers();
        }
    }

    /**
     * Removes the given on click callback.
     * <p>
     * No-op if the callback was never added.
     */
    private void removeOnClickListener(@NonNull OnClickListener listener) {
        boolean wasEmpty = mOnClickListeners.isEmpty();
        mOnClickListeners.remove(listener);
        if (!wasEmpty && mOnClickListeners.isEmpty()) {
            recreateControllers();
        }
    }

    /**
     * Queues the given callback on the next click on this drag layer.
     * <p>
     * Once run, this callback is immediately removed.
     */
    public void runOnClickOnce(@NonNull OnClickListener listener) {
        addOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                listener.onClick(v);
                removeOnClickListener(this);
            }
        });
    }

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