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

Commit e19039cc authored by Ryan Lin's avatar Ryan Lin Committed by Android (Google) Code Review
Browse files

Merge "Fix the cutout of magnification border"

parents 796ec235 c8d588cf
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -61,7 +61,6 @@ import com.android.launcher3.folder.FolderIcon;
import com.android.launcher3.logger.LauncherAtom;
import com.android.launcher3.model.data.FolderInfo;
import com.android.launcher3.model.data.WorkspaceItemInfo;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.touch.ItemClickHandler;
import com.android.launcher3.util.PackageManagerHelper;
import com.android.launcher3.util.SettingsCache;
@@ -108,6 +107,8 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
    private final boolean mIsSafeModeEnabled;
    private final boolean mIsUserSetupComplete;
    private boolean mIsDestroyed = false;
    // The flag to know if the window is excluded from magnification region computation.
    private boolean mIsExcludeFromMagnificationRegion = false;

    public TaskbarActivityContext(Context windowContext, DeviceProfile dp,
            TaskbarNavButtonController buttonController, ScopedUnfoldTransitionProgressProvider
@@ -520,4 +521,25 @@ public class TaskbarActivityContext extends ContextThemeWrapper implements Activ
    protected boolean isUserSetupComplete() {
        return mIsUserSetupComplete;
    }

    /**
     * Called when we determine the touchable region.
     *
     * @param exclude {@code true} then the magnification region computation will omit the window.
     */
    public void excludeFromMagnificationRegion(boolean exclude) {
        if (mIsExcludeFromMagnificationRegion == exclude) {
            return;
        }

        mIsExcludeFromMagnificationRegion = exclude;
        if (exclude) {
            mWindowLayoutParams.privateFlags |=
                    WindowManager.LayoutParams.PRIVATE_FLAG_EXCLUDE_FROM_SCREEN_MAGNIFICATION;
        } else {
            mWindowLayoutParams.privateFlags &=
                    ~WindowManager.LayoutParams.PRIVATE_FLAG_EXCLUDE_FROM_SCREEN_MAGNIFICATION;
        }
        mWindowManager.updateViewLayout(mDragLayer, mWindowLayoutParams);
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -137,12 +137,14 @@ public class TaskbarDragLayerController {
            // Always have nav buttons be touchable
            mControllers.navbarButtonsViewController.addVisibleButtonsRegion(
                    mTaskbarDragLayer, insetsInfo.touchableRegion);
            boolean insetsIsTouchableRegion = true;

            if (mTaskbarDragLayer.getAlpha() < AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD) {
                // Let touches pass through us.
                insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
            } else if (mControllers.navbarButtonsViewController.isImeVisible()) {
                insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_CONTENT);
                insetsIsTouchableRegion = false;
            } else if (!mControllers.uiController.isTaskbarTouchable()) {
                // Let touches pass through us.
                insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
@@ -151,9 +153,11 @@ public class TaskbarDragLayerController {
                // Taskbar has some touchable elements, take over the full taskbar area
                insetsInfo.setTouchableInsets(mActivity.isTaskbarWindowFullscreen()
                        ? TOUCHABLE_INSETS_FRAME : TOUCHABLE_INSETS_CONTENT);
                insetsIsTouchableRegion = false;
            } else {
                insetsInfo.setTouchableInsets(TOUCHABLE_INSETS_REGION);
            }
            mActivity.excludeFromMagnificationRegion(insetsIsTouchableRegion);
        }

        /**