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

Commit cc42c5bd authored by Jon Miranda's avatar Jon Miranda
Browse files

Create new DeviceProfile when in multi window mode.

This is just a first pass to help make the codebase ready for MW mode.
ie. won't see the effects of this unless resizeableActivity is set to true
in the Android Manifest.

Also allows long clicks from edge when in MW mode.

Bug: 32176631
Change-Id: I48e5cb3bd15e70627d9bf007d93bc731612fba2e
parent 2962d52d
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -205,6 +205,13 @@ public class DeviceProfile {
        computeAllAppsButtonSize(context);
    }

    DeviceProfile getMultiWindowProfile(Context context, Point mwSize) {
        // In multi-window mode, we can have widthPx = availableWidthPx
        // and heightPx = availableHeightPx because Launcher uses the InvariantDeviceProfiles'
        // widthPx and heightPx values where it's needed.
        return new DeviceProfile(context, inv, mwSize, mwSize, mwSize.x, mwSize.y, isLandscape);
    }

    public void addLauncherLayoutChangedListener(LauncherLayoutChangeListener listener) {
        if (!mListeners.contains(listener)) {
            mListeners.add(listener);
@@ -599,4 +606,11 @@ public class DeviceProfile {
                hotseatBarHeightPx + hotseatLandGutterPx + mInsets.left) / 2;
        return new int[]{ padding, padding };
    }

    public boolean shouldIgnoreLongPressToOverview(float touchX, float edgeThreshold) {
        boolean inMultiWindowMode = this != inv.landscapeProfile && this != inv.portraitProfile;
        boolean touchedLhsEdge = mInsets.left == 0 && touchX < edgeThreshold;
        boolean touchedRhsEdge = mInsets.right == 0 && touchX > (widthPx - edgeThreshold);
        return !inMultiWindowMode && (touchedLhsEdge || touchedRhsEdge);
    }
}
+17 −8
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Bitmap;
import android.graphics.Point;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
@@ -359,11 +360,18 @@ public class Launcher extends Activity
        LauncherAppState app = LauncherAppState.getInstance();

        // Load configuration-specific DeviceProfile
        mDeviceProfile = getResources().getConfiguration().orientation
                == Configuration.ORIENTATION_LANDSCAPE ?
                app.getInvariantDeviceProfile().landscapeProfile
        mDeviceProfile =
                getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE
                        ? app.getInvariantDeviceProfile().landscapeProfile
                        : app.getInvariantDeviceProfile().portraitProfile;

        if (Utilities.isNycOrAbove() && isInMultiWindowMode()) {
            Display display = getWindowManager().getDefaultDisplay();
            Point mwSize = new Point();
            display.getSize(mwSize);
            mDeviceProfile = mDeviceProfile.getMultiWindowProfile(this, mwSize);
        }

        mSharedPrefs = Utilities.getPrefs(this);
        mIsSafeModeEnabled = getPackageManager().isSafeMode();
        mModel = app.setLauncher(this);
@@ -2708,12 +2716,13 @@ public class Launcher extends Activity
            return true;
        }

        boolean fromEdgeOfScreen = mLastDispatchTouchEventX < mEdgeOfScreenThresholdPx
                || mLastDispatchTouchEventX > (mDeviceProfile.widthPx - mEdgeOfScreenThresholdPx);

        boolean ignoreLongPressToOverview = mDeviceProfile.shouldIgnoreLongPressToOverview(
                mLastDispatchTouchEventX, mEdgeOfScreenThresholdPx);

        if (v instanceof Workspace) {
            if (!mWorkspace.isInOverviewMode()) {
                if (!mWorkspace.isTouchActive() && !fromEdgeOfScreen) {
                if (!mWorkspace.isTouchActive() && !ignoreLongPressToOverview) {
                    getUserEventDispatcher().logActionOnContainer(LauncherLogProto.Action.LONGPRESS,
                            LauncherLogProto.Action.NONE, LauncherLogProto.WORKSPACE,
                            mWorkspace.getCurrentPage());
@@ -2748,7 +2757,7 @@ public class Launcher extends Activity
                    getUserEventDispatcher().logActionOnContainer(LauncherLogProto.Action.LONGPRESS,
                            LauncherLogProto.Action.NONE, LauncherLogProto.OVERVIEW);
                } else {
                    if (fromEdgeOfScreen) {
                    if (ignoreLongPressToOverview) {
                        return false;
                    }
                    getUserEventDispatcher().logActionOnContainer(LauncherLogProto.Action.LONGPRESS,