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

Commit bd590a4c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Focusing on the second task on Alt+Tab" into ub-launcher3-master

parents 52587f70 7f553365
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ public class MotionEventQueue {
            ACTION_VIRTUAL | (5 << ACTION_POINTER_INDEX_SHIFT);
    private static final int ACTION_DEFER_INIT =
            ACTION_VIRTUAL | (6 << ACTION_POINTER_INDEX_SHIFT);
    private static final int ACTION_SHOW_OVERVIEW_FROM_ALT_TAB =
            ACTION_VIRTUAL | (7 << ACTION_POINTER_INDEX_SHIFT);

    private final EventArray mEmptyArray = new EventArray();
    private final Object mExecutionLock = new Object();
@@ -161,6 +163,10 @@ public class MotionEventQueue {
                        case ACTION_DEFER_INIT:
                            mConsumer.deferInit();
                            break;
                        case ACTION_SHOW_OVERVIEW_FROM_ALT_TAB:
                            mConsumer.onShowOverviewFromAltTab();
                            mConsumer.updateTouchTracking(INTERACTION_QUICK_SCRUB);
                            break;
                        default:
                            Log.e(TAG, "Invalid virtual event: " + event.getAction());
                    }
@@ -197,6 +203,10 @@ public class MotionEventQueue {
        queueVirtualAction(ACTION_QUICK_SCRUB_START, 0);
    }

    public void onOverviewShownFromAltTab() {
        queueVirtualAction(ACTION_SHOW_OVERVIEW_FROM_ALT_TAB, 0);
    }

    public void onQuickScrubProgress(float progress) {
        queueVirtualAction(ACTION_QUICK_SCRUB_PROGRESS, progress);
    }
+6 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
import android.os.Looper;
import android.util.Log;
import android.os.SystemClock;
import android.view.Choreographer;
import android.view.Display;
import android.view.MotionEvent;
@@ -106,6 +106,11 @@ public class OtherActivityTouchConsumer extends ContextWrapper implements TouchC
        mIsDeferredDownTarget = Arrays.binarySearch(DEFERRED_HIT_TARGETS, downHitTarget) >= 0;
    }

    @Override
    public void onShowOverviewFromAltTab() {
        startTouchTrackingForWindowAnimation(SystemClock.uptimeMillis());
    }

    @Override
    public void accept(MotionEvent ev) {
        if (mVelocityTracker == null) {
+2 −0
Original line number Diff line number Diff line
@@ -72,4 +72,6 @@ public interface TouchConsumer extends Consumer<MotionEvent> {
    default boolean forceToLauncherConsumer() {
        return false;
    }

    default void onShowOverviewFromAltTab() {}
}
+13 −4
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import static android.view.MotionEvent.ACTION_MOVE;
import static android.view.MotionEvent.ACTION_POINTER_DOWN;
import static android.view.MotionEvent.ACTION_POINTER_UP;
import static android.view.MotionEvent.ACTION_UP;

import static com.android.launcher3.LauncherState.FAST_OVERVIEW;
import static com.android.launcher3.LauncherState.NORMAL;

@@ -54,6 +55,8 @@ import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.system.ActivityManagerWrapper;
import com.android.systemui.shared.system.NavigationBarCompat.HitTarget;

import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_NONE;

/**
 * Service connected by system-UI for handling touch interaction.
 */
@@ -85,7 +88,7 @@ public class TouchInteractionService extends Service {
        @Override
        public void onPreMotionEvent(@HitTarget int downHitTarget) throws RemoteException {
            TraceHelper.beginSection("SysUiBinder");
            onBinderPreMotionEvent(downHitTarget);
            setupTouchConsumer(downHitTarget);
            TraceHelper.partitionSection("SysUiBinder", "Down target " + downHitTarget);
        }

@@ -139,14 +142,20 @@ public class TouchInteractionService extends Service {
        @Override
        public void onOverviewShown(boolean triggeredFromAltTab) {
            if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) {
                mOverviewCommandHelper.onOverviewShown();
                if (triggeredFromAltTab) {
                    setupTouchConsumer(HIT_TARGET_NONE);
                    mEventQueue.onOverviewShownFromAltTab();
                }
            }
        }

        @Override
        public void onOverviewHidden(boolean triggeredFromAltTab, boolean triggeredFromHomeKey) {
            if (DEBUG_OPEN_OVERVIEW_VIA_ALT_TAB) {
                mOverviewCommandHelper.onOverviewHidden();
                if (triggeredFromAltTab && !triggeredFromHomeKey) {
                    // onOverviewShownFromAltTab initiates quick scrub. Ending it here.
                    mEventQueue.onQuickScrubEnd();
                }
            }
        }

@@ -205,7 +214,7 @@ public class TouchInteractionService extends Service {
        return mMyBinder;
    }

    private void onBinderPreMotionEvent(@HitTarget int downHitTarget) {
    private void setupTouchConsumer(@HitTarget int downHitTarget) {
        mEventQueue.reset();
        TouchConsumer oldConsumer = mEventQueue.getConsumer();
        if (oldConsumer.deferNextEventToMainThread()) {