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
This commit is contained in:
parent
64af7acc1d
commit
09b40241fc
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue