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

Commit 4dcbc2f4 authored by Arthur Hung's avatar Arthur Hung Committed by Automerger Merge Worker
Browse files

Merge "Fix TouchExcludeRegion should ignore the invisible windows" into rvc-dev am: 7532d755

Change-Id: I81d4d5c2b8fc798b0957623f6e5770d9c6c28974
parents ab2248f1 7532d755
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2547,6 +2547,9 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
        }
        for (int i = mTapExcludedWindows.size() - 1; i >= 0; i--) {
            final WindowState win = mTapExcludedWindows.get(i);
            if (!win.isVisibleLw()) {
                continue;
            }
            win.getTouchableRegion(mTmpRegion);
            mTouchExcludeRegion.op(mTmpRegion, Region.Op.UNION);
        }
+15 −7
Original line number Diff line number Diff line
@@ -48,6 +48,16 @@ public class TaskTapPointerEventListener implements PointerEventListener {
        mDisplayContent = displayContent;
    }

    private void restorePointerIcon(int x, int y) {
        if (mPointerIconType != TYPE_NOT_SPECIFIED) {
            mPointerIconType = TYPE_NOT_SPECIFIED;
            // Find the underlying window and ask it to restore the pointer icon.
            mService.mH.removeMessages(H.RESTORE_POINTER_ICON);
            mService.mH.obtainMessage(H.RESTORE_POINTER_ICON,
                    x, y, mDisplayContent).sendToTarget();
        }
    }

    @Override
    public void onPointerEvent(MotionEvent motionEvent) {
        switch (motionEvent.getActionMasked()) {
@@ -67,6 +77,10 @@ public class TaskTapPointerEventListener implements PointerEventListener {
            case MotionEvent.ACTION_HOVER_MOVE: {
                final int x = (int) motionEvent.getX();
                final int y = (int) motionEvent.getY();
                if (mTouchExcludeRegion.contains(x, y)) {
                    restorePointerIcon(x, y);
                    break;
                }
                final Task task = mDisplayContent.findTaskForResizePoint(x, y);
                int iconType = TYPE_NOT_SPECIFIED;
                if (task != null) {
@@ -103,13 +117,7 @@ public class TaskTapPointerEventListener implements PointerEventListener {
            case MotionEvent.ACTION_HOVER_EXIT: {
                final int x = (int) motionEvent.getX();
                final int y = (int) motionEvent.getY();
                if (mPointerIconType != TYPE_NOT_SPECIFIED) {
                    mPointerIconType = TYPE_NOT_SPECIFIED;
                    // Find the underlying window and ask it to restore the pointer icon.
                    mService.mH.removeMessages(H.RESTORE_POINTER_ICON);
                    mService.mH.obtainMessage(H.RESTORE_POINTER_ICON,
                            x, y, mDisplayContent).sendToTarget();
                }
                restorePointerIcon(x, y);
            }
            break;
        }
+2 −0
Original line number Diff line number Diff line
@@ -72,6 +72,7 @@ import static android.view.WindowManager.LayoutParams.TYPE_QS_DIALOG;
import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
import static android.view.WindowManager.LayoutParams.TYPE_VOICE_INTERACTION;
import static android.view.WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
import static android.view.WindowManager.REMOVE_CONTENT_MODE_UNDEFINED;
import static android.view.WindowManagerGlobal.ADD_OKAY;
@@ -1373,6 +1374,7 @@ public class WindowManagerService extends IWindowManager.Stub
            case TYPE_NOTIFICATION_SHADE:
            case TYPE_NAVIGATION_BAR:
            case TYPE_INPUT_METHOD_DIALOG:
            case TYPE_VOLUME_OVERLAY:
                return true;
        }
        return false;