Merge "Fix issues with docked stack not un-minimizing" into nyc-dev

This commit is contained in:
Jorim Jaggi
2016-04-28 20:33:27 +00:00
committed by Android (Google) Code Review
4 changed files with 24 additions and 6 deletions

View File

@@ -377,7 +377,7 @@ public class DockedStackDividerController implements DimLayerUser {
// If the app that having visibility change is not the top visible one in the task, // If the app that having visibility change is not the top visible one in the task,
// it does not affect whether the docked stack is minimized, ignore it. // it does not affect whether the docked stack is minimized, ignore it.
if (task.getTopVisibleAppToken() == null || task.getTopVisibleAppToken() != wtoken) { if (task.getTopAppToken() == null || task.getTopAppToken() != wtoken) {
return; return;
} }
@@ -598,7 +598,7 @@ public class DockedStackDividerController implements DimLayerUser {
} }
private boolean animateForMinimizedDockedStack(long now) { private boolean animateForMinimizedDockedStack(long now) {
final TaskStack stack = mDisplayContent.getDockedStackVisibleForUserLocked(); final TaskStack stack = mService.mStackIdToStack.get(DOCKED_STACK_ID);
if (!mAnimationStarted) { if (!mAnimationStarted) {
mAnimationStarted = true; mAnimationStarted = true;
mAnimationStartTime = now; mAnimationStartTime = now;

View File

@@ -719,6 +719,10 @@ class Task implements DimLayer.DimLayerUser {
return null; return null;
} }
AppWindowToken getTopAppToken() {
return mAppTokens.size() > 0 ? mAppTokens.get(mAppTokens.size() - 1) : null;
}
@Override @Override
public boolean isFullscreen() { public boolean isFullscreen() {
if (useCurrentBounds()) { if (useCurrentBounds()) {

View File

@@ -1098,6 +1098,14 @@ public class TaskStack implements DimLayer.DimLayerUser,
pw.println(prefix + "mDeferDetach=" + mDeferDetach); pw.println(prefix + "mDeferDetach=" + mDeferDetach);
pw.println(prefix + "mFullscreen=" + mFullscreen); pw.println(prefix + "mFullscreen=" + mFullscreen);
pw.println(prefix + "mBounds=" + mBounds.toShortString()); pw.println(prefix + "mBounds=" + mBounds.toShortString());
if (mMinimizeAmount != 0f) {
pw.println(prefix + "mMinimizeAmout=" + mMinimizeAmount);
}
if (mAdjustedForIme) {
pw.println(prefix + "mAdjustedForIme=true");
pw.println(prefix + "mAdjustImeAmount=" + mAdjustImeAmount);
pw.println(prefix + "mAdjustDividerAmount=" + mAdjustDividerAmount);
}
if (!mAdjustedBounds.isEmpty()) { if (!mAdjustedBounds.isEmpty()) {
pw.println(prefix + "mAdjustedBounds=" + mAdjustedBounds.toShortString()); pw.println(prefix + "mAdjustedBounds=" + mAdjustedBounds.toShortString());
} }

View File

@@ -4335,15 +4335,21 @@ public class WindowManagerService extends IWindowManager.Stub
} }
} }
if (visibilityChanged && !delayed) { if (visibilityChanged) {
if (visible) { if (visible && !delayed) {
// The token was made immediately visible, there will be no entrance animation. // The token was made immediately visible, there will be no entrance animation.
// We need to inform the client the enter animation was finished. // We need to inform the client the enter animation was finished.
wtoken.mEnteringAnimation = true; wtoken.mEnteringAnimation = true;
mActivityManagerAppTransitionNotifier.onAppTransitionFinishedLocked(wtoken.token); mActivityManagerAppTransitionNotifier.onAppTransitionFinishedLocked(wtoken.token);
} }
getDefaultDisplayContentLocked().getDockedDividerController()
.notifyAppVisibilityChanged(wtoken, visible); if (!mClosingApps.contains(wtoken) && !mOpeningApps.contains(wtoken)) {
// The token is not closing nor opening, so even if there is an animation set, that
// doesn't mean that it goes through the normal app transition cycle so we have
// to inform the docked controller about visibility change.
getDefaultDisplayContentLocked().getDockedDividerController()
.notifyAppVisibilityChanged(wtoken, visible);
}
} }
return delayed; return delayed;