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

Commit 26b18771 authored by Filip Gruszczynski's avatar Filip Gruszczynski Committed by Android (Google) Code Review
Browse files

Merge "Private Window flag to disable touch events in WallpaperService." into lmp-sprout-dev

parents 8242ae16 b8c0694a
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1115,6 +1115,13 @@ public interface WindowManager extends ViewManager {
         */
        public static final int PRIVATE_FLAG_KEYGUARD = 0x00000400;

        /**
         * Flag that prevents the wallpaper behind the current window from receiving touch events.
         *
         * {@hide}
         */
        public static final int PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS = 0x00000800;

        /**
         * Control flags that are private to the platform.
         * @hide
+8 −1
Original line number Diff line number Diff line
@@ -243,6 +243,7 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
        final WindowStateAnimator universeBackground = mService.mAnimator.mUniverseBackground;
        final int aboveUniverseLayer = mService.mAnimator.mAboveUniverseLayer;
        boolean addedUniverse = false;
        boolean disableWallpaperTouchEvents = false;

        // If there's a drag in flight, provide a pseudowindow to catch drag input
        final boolean inDrag = (mService.mDragState != null);
@@ -283,8 +284,14 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {

                final boolean hasFocus = (child == mInputFocus);
                final boolean isVisible = child.isVisibleLw();
                if ((privateFlags
                        & WindowManager.LayoutParams.PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS)
                            != 0) {
                    disableWallpaperTouchEvents = true;
                }
                final boolean hasWallpaper = (child == mService.mWallpaperTarget)
                        && (privateFlags & WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD) == 0;
                        && (privateFlags & WindowManager.LayoutParams.PRIVATE_FLAG_KEYGUARD) == 0
                        && !disableWallpaperTouchEvents;
                final boolean onDefaultDisplay = (child.getDisplayId() == Display.DEFAULT_DISPLAY);

                // If there's a drag in progress and 'child' is a potential drop target,