Commit 76b9fb81 authored by Ryan Landay's avatar Ryan Landay Committed by Commit Bot

Change StackLayout's mTemporarySelectedStack from Boolean to int

mTemporarySelectedStack is a variable that temporarily stores the selected tab
stack. Its value is used to update TabModelSelector's currently selected model
once the scroll animation finishes.

This CL changes mTemporarySelectedStack from a Boolean to an int so StackLayout
can support more than two tab stacks.

Bug: 648314
Change-Id: I337feb3b82f687ef554c577544d1087c8d0e9c40
Reviewed-on: https://chromium-review.googlesource.com/954285
Commit-Queue: Ryan Landay <rlanday@chromium.org>
Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541977}
parent 3d9e7805
...@@ -76,6 +76,7 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper ...@@ -76,6 +76,7 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper
private static final int SWIPE_MODE_SEND_TO_STACK = 1; private static final int SWIPE_MODE_SEND_TO_STACK = 1;
private static final int SWIPE_MODE_SWITCH_STACK = 2; private static final int SWIPE_MODE_SWITCH_STACK = 2;
private static final int INVALID_STACK_INDEX = -1;
public static final int NORMAL_STACK_INDEX = 0; public static final int NORMAL_STACK_INDEX = 0;
public static final int INCOGNITO_STACK_INDEX = 1; public static final int INCOGNITO_STACK_INDEX = 1;
...@@ -154,7 +155,11 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper ...@@ -154,7 +155,11 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper
private static final int LAYOUTTAB_ASYNCHRONOUS_INITIALIZATION_BATCH_SIZE = 4; private static final int LAYOUTTAB_ASYNCHRONOUS_INITIALIZATION_BATCH_SIZE = 4;
private boolean mDelayedLayoutTabInitRequired; private boolean mDelayedLayoutTabInitRequired;
private Boolean mTemporarySelectedStack; /**
* Temporarily stores the index of the selected tab stack. This is used to set the currently
* selected stack in TabModelSelector once the stack-switching animation finishes.
*/
private int mTemporarySelectedStack = INVALID_STACK_INDEX;
// Orientation Variables // Orientation Variables
private PortraitViewport mCachedPortraitViewport; private PortraitViewport mCachedPortraitViewport;
...@@ -387,10 +392,10 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper ...@@ -387,10 +392,10 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper
*/ */
protected int getTabStackIndex(int tabId) { protected int getTabStackIndex(int tabId) {
if (tabId == Tab.INVALID_TAB_ID) { if (tabId == Tab.INVALID_TAB_ID) {
boolean incognito = mTemporarySelectedStack != null if (mTemporarySelectedStack != INVALID_STACK_INDEX) return mTemporarySelectedStack;
? mTemporarySelectedStack
: mTabModelSelector.isIncognitoSelected(); return mTabModelSelector.isIncognitoSelected() ? INCOGNITO_STACK_INDEX
return incognito ? INCOGNITO_STACK_INDEX : NORMAL_STACK_INDEX; : NORMAL_STACK_INDEX;
} else { } else {
return TabModelUtils.getTabById(mTabModelSelector.getModel(true), tabId) != null ? 1 return TabModelUtils.getTabById(mTabModelSelector.getModel(true), tabId) != null ? 1
: 0; : 0;
...@@ -587,9 +592,9 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper ...@@ -587,9 +592,9 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper
@Override @Override
protected void onAnimationFinished() { protected void onAnimationFinished() {
mFlingFromModelChange = false; mFlingFromModelChange = false;
if (mTemporarySelectedStack != null) { if (mTemporarySelectedStack != INVALID_STACK_INDEX) {
mTabModelSelector.selectModel(mTemporarySelectedStack); mTabModelSelector.selectModel(mTemporarySelectedStack == INCOGNITO_STACK_INDEX);
mTemporarySelectedStack = null; mTemporarySelectedStack = INVALID_STACK_INDEX;
} }
if (mStackAnimationCount == 0) super.onAnimationFinished(); if (mStackAnimationCount == 0) super.onAnimationFinished();
if (mNewTabLayoutTab != null) { if (mNewTabLayoutTab != null) {
...@@ -1012,9 +1017,9 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper ...@@ -1012,9 +1017,9 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper
addToAnimation(this, Property.STACK_SNAP, mRenderedScrollOffset, target, duration, 0); addToAnimation(this, Property.STACK_SNAP, mRenderedScrollOffset, target, duration, 0);
} else { } else {
setProperty(Property.STACK_SNAP, target); setProperty(Property.STACK_SNAP, target);
if (mTemporarySelectedStack != null) { if (mTemporarySelectedStack != INVALID_STACK_INDEX) {
mTabModelSelector.selectModel(mTemporarySelectedStack); mTabModelSelector.selectModel(mTemporarySelectedStack == INCOGNITO_STACK_INDEX);
mTemporarySelectedStack = null; mTemporarySelectedStack = INVALID_STACK_INDEX;
} }
} }
} }
...@@ -1125,7 +1130,7 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper ...@@ -1125,7 +1130,7 @@ public class StackLayout extends Layout implements Animatable<StackLayout.Proper
*/ */
public boolean setActiveStackState(boolean isIncognito) { public boolean setActiveStackState(boolean isIncognito) {
if (isIncognito == mTabModelSelector.isIncognitoSelected()) return false; if (isIncognito == mTabModelSelector.isIncognitoSelected()) return false;
mTemporarySelectedStack = isIncognito; mTemporarySelectedStack = isIncognito ? INCOGNITO_STACK_INDEX : NORMAL_STACK_INDEX;
return true; return true;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment