Merge "Fix FloatingToolbar flickers." into mnc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
07e440b278
@@ -34575,6 +34575,7 @@ package android.view {
|
|||||||
method public abstract void invalidate();
|
method public abstract void invalidate();
|
||||||
method public void invalidateContentRect();
|
method public void invalidateContentRect();
|
||||||
method public boolean isTitleOptional();
|
method public boolean isTitleOptional();
|
||||||
|
method public void onWindowFocusChanged(boolean);
|
||||||
method public abstract void setCustomView(android.view.View);
|
method public abstract void setCustomView(android.view.View);
|
||||||
method public abstract void setSubtitle(java.lang.CharSequence);
|
method public abstract void setSubtitle(java.lang.CharSequence);
|
||||||
method public abstract void setSubtitle(int);
|
method public abstract void setSubtitle(int);
|
||||||
|
|||||||
@@ -36856,6 +36856,7 @@ package android.view {
|
|||||||
method public abstract void invalidate();
|
method public abstract void invalidate();
|
||||||
method public void invalidateContentRect();
|
method public void invalidateContentRect();
|
||||||
method public boolean isTitleOptional();
|
method public boolean isTitleOptional();
|
||||||
|
method public void onWindowFocusChanged(boolean);
|
||||||
method public abstract void setCustomView(android.view.View);
|
method public abstract void setCustomView(android.view.View);
|
||||||
method public abstract void setSubtitle(java.lang.CharSequence);
|
method public abstract void setSubtitle(java.lang.CharSequence);
|
||||||
method public abstract void setSubtitle(int);
|
method public abstract void setSubtitle(int);
|
||||||
|
|||||||
@@ -260,6 +260,16 @@ public abstract class ActionMode {
|
|||||||
*/
|
*/
|
||||||
public abstract MenuInflater getMenuInflater();
|
public abstract MenuInflater getMenuInflater();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the window containing the view that started this action mode gains or loses
|
||||||
|
* focus.
|
||||||
|
*
|
||||||
|
* @param hasWindowFocus True if the window containing the view that started this action mode
|
||||||
|
* now has focus, false otherwise.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public void onWindowFocusChanged(boolean hasWindowFocus) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether the UI presenting this action mode can take focus or not.
|
* Returns whether the UI presenting this action mode can take focus or not.
|
||||||
* This is used by internal components within the framework that would otherwise
|
* This is used by internal components within the framework that would otherwise
|
||||||
|
|||||||
@@ -3223,12 +3223,11 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
cb.onWindowFocusChanged(hasWindowFocus);
|
cb.onWindowFocusChanged(hasWindowFocus);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mFloatingToolbar != null) {
|
if (mPrimaryActionMode != null) {
|
||||||
if (hasWindowFocus) {
|
mPrimaryActionMode.onWindowFocusChanged(hasWindowFocus);
|
||||||
mFloatingToolbar.show();
|
}
|
||||||
} else {
|
if (mFloatingActionMode != null) {
|
||||||
mFloatingToolbar.dismiss();
|
mFloatingActionMode.onWindowFocusChanged(hasWindowFocus);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3441,8 +3440,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
|
|||||||
mFloatingActionMode = mode;
|
mFloatingActionMode = mode;
|
||||||
mFloatingToolbar = new FloatingToolbar(mContext, PhoneWindow.this);
|
mFloatingToolbar = new FloatingToolbar(mContext, PhoneWindow.this);
|
||||||
((FloatingActionMode) mFloatingActionMode).setFloatingToolbar(mFloatingToolbar);
|
((FloatingActionMode) mFloatingActionMode).setFloatingToolbar(mFloatingToolbar);
|
||||||
mFloatingActionMode.invalidate();
|
mFloatingActionMode.invalidate(); // Will show the floating toolbar if necessary.
|
||||||
mFloatingToolbar.show();
|
|
||||||
mFloatingActionModeOriginatingView.getViewTreeObserver()
|
mFloatingActionModeOriginatingView.getViewTreeObserver()
|
||||||
.addOnPreDrawListener(mFloatingToolbarPreDrawListener);
|
.addOnPreDrawListener(mFloatingToolbarPreDrawListener);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -196,6 +196,13 @@ public class FloatingActionMode extends ActionMode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onWindowFocusChanged(boolean hasWindowFocus) {
|
||||||
|
checkToolbarInitialized();
|
||||||
|
mFloatingToolbarVisibilityHelper.setWindowFocused(hasWindowFocus);
|
||||||
|
mFloatingToolbarVisibilityHelper.updateToolbarVisibility();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void finish() {
|
public void finish() {
|
||||||
checkToolbarInitialized();
|
checkToolbarInitialized();
|
||||||
@@ -237,6 +244,7 @@ public class FloatingActionMode extends ActionMode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void reset() {
|
private void reset() {
|
||||||
|
mFloatingToolbar.dismiss();
|
||||||
mFloatingToolbarVisibilityHelper.deactivate();
|
mFloatingToolbarVisibilityHelper.deactivate();
|
||||||
mOriginatingView.removeCallbacks(mMovingOff);
|
mOriginatingView.removeCallbacks(mMovingOff);
|
||||||
mOriginatingView.removeCallbacks(mHideOff);
|
mOriginatingView.removeCallbacks(mHideOff);
|
||||||
@@ -253,6 +261,7 @@ public class FloatingActionMode extends ActionMode {
|
|||||||
private boolean mHideRequested;
|
private boolean mHideRequested;
|
||||||
private boolean mMoving;
|
private boolean mMoving;
|
||||||
private boolean mOutOfBounds;
|
private boolean mOutOfBounds;
|
||||||
|
private boolean mWindowFocused = true;
|
||||||
|
|
||||||
private boolean mActive;
|
private boolean mActive;
|
||||||
|
|
||||||
@@ -264,6 +273,7 @@ public class FloatingActionMode extends ActionMode {
|
|||||||
mHideRequested = false;
|
mHideRequested = false;
|
||||||
mMoving = false;
|
mMoving = false;
|
||||||
mOutOfBounds = false;
|
mOutOfBounds = false;
|
||||||
|
mWindowFocused = true;
|
||||||
|
|
||||||
mActive = true;
|
mActive = true;
|
||||||
}
|
}
|
||||||
@@ -285,12 +295,16 @@ public class FloatingActionMode extends ActionMode {
|
|||||||
mOutOfBounds = outOfBounds;
|
mOutOfBounds = outOfBounds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setWindowFocused(boolean windowFocused) {
|
||||||
|
mWindowFocused = windowFocused;
|
||||||
|
}
|
||||||
|
|
||||||
public void updateToolbarVisibility() {
|
public void updateToolbarVisibility() {
|
||||||
if (!mActive) {
|
if (!mActive) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mHideRequested || mMoving || mOutOfBounds) {
|
if (mHideRequested || mMoving || mOutOfBounds || !mWindowFocused) {
|
||||||
mToolbar.hide();
|
mToolbar.hide();
|
||||||
} else {
|
} else {
|
||||||
mToolbar.show();
|
mToolbar.show();
|
||||||
|
|||||||
Reference in New Issue
Block a user