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

Commit 09b40241 authored by Jerry Chang's avatar Jerry Chang
Browse files

Always refresh device profile when multi window mode changed

Launcher monitors multi-window mode changed and updates device profile
through configuration chagned callback. It's possible that a new
configuration contains multi-window mode changed but without screen
size size change that across screen layout qualifier. Client apps might
not even receive onConfingurationChagned.

Updates Launcher to monitor multi-window mode changed through
onMultiWindowModeChanged to make sure it always refreshes device profile
that matches with the latest mulati-window mode.

Fix: 197835119
Test: manual check the repo steps.
Change-Id: Ie99045a1fc8493ff37645b95e7ccd9d15478d862
parent 64af7acc
Loading
Loading
Loading
Loading
+11 −5
Original line number Original line Diff line number Diff line
@@ -554,6 +554,14 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche
        AbstractFloatingView.closeOpenViews(this, false, TYPE_ICON_SURFACE);
        AbstractFloatingView.closeOpenViews(this, false, TYPE_ICON_SURFACE);
    }
    }


    @Override
    public void onMultiWindowModeChanged(boolean isInMultiWindowMode, Configuration newConfig) {
        super.onMultiWindowModeChanged(isInMultiWindowMode, newConfig);
        // Always update device profile when multi window mode changed.
        initDeviceProfile(mDeviceProfile.inv);
        dispatchDeviceProfileChanged();
    }

    @Override
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
    public void onConfigurationChanged(Configuration newConfig) {
        int diff = newConfig.diff(mOldConfig);
        int diff = newConfig.diff(mOldConfig);
@@ -592,11 +600,9 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche


    private void initDeviceProfile(InvariantDeviceProfile idp) {
    private void initDeviceProfile(InvariantDeviceProfile idp) {
        // Load configuration-specific DeviceProfile
        // Load configuration-specific DeviceProfile
        mDeviceProfile = idp.getDeviceProfile(this);
        mDeviceProfile = isInMultiWindowMode()
        if (isInMultiWindowMode()) {
                ? mDeviceProfile.getMultiWindowProfile(this, getMultiWindowDisplaySize())
            mDeviceProfile = mDeviceProfile.getMultiWindowProfile(
                : idp.getDeviceProfile(this);
                    this, getMultiWindowDisplaySize());
        }


        onDeviceProfileInitiated();
        onDeviceProfileInitiated();
        mModelWriter = mModel.getWriter(getDeviceProfile().isVerticalBarLayout(), true, this);
        mModelWriter = mModel.getWriter(getDeviceProfile().isVerticalBarLayout(), true, this);