Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Unified Diff: chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java

Issue 2892953005: [Home] Show bottom nav above keyboard (Closed)
Patch Set: rebase; remove window delegate Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java
index e1b64f14993c6c6c7bbae9c6ceb086947a91bc89..e1891689916272ba4fd7fad0ae1957fb5bd39504 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/widget/bottomsheet/BottomSheetContentController.java
@@ -76,9 +76,18 @@ public class BottomSheetContentController extends BottomNavigationView
private final BottomSheetObserver mBottomSheetObserver = new EmptyBottomSheetObserver() {
@Override
public void onSheetOffsetChanged(float heightFraction) {
- float offsetY = (mBottomSheet.getMinOffset() - mBottomSheet.getSheetOffsetFromBottom())
- + mDistanceBelowToolbarPx;
- setTranslationY((int) Math.max(offsetY, 0f));
+ // If the omnibox is not focused, allow the navigation bar to set its Y translation.
+ if (!mOmniboxHasFocus) {
+ float offsetY =
+ (mBottomSheet.getMinOffset() - mBottomSheet.getSheetOffsetFromBottom())
+ + mDistanceBelowToolbarPx;
+ setTranslationY(Math.max(offsetY, 0f));
+
+ if (mBottomSheet.getTargetSheetState() != BottomSheet.SHEET_STATE_PEEK
+ && mSelectedItemId == PLACEHOLDER_ID) {
+ showBottomSheetContent(R.id.action_home);
+ }
+ }
setVisibility(MathUtils.areFloatsEqual(heightFraction, 0f) ? View.GONE : View.VISIBLE);
mSnackbarManager.dismissAllSnackbars();
@@ -124,6 +133,11 @@ public class BottomSheetContentController extends BottomNavigationView
mBottomSheet.setSheetState(BottomSheet.SHEET_STATE_FULL, true);
}
}
+
+ @Override
+ public void onSheetLayout(int windowHeight, int containerHeight) {
+ setTranslationY(containerHeight - windowHeight);
+ }
};
private BottomSheet mBottomSheet;
@@ -135,6 +149,7 @@ public class BottomSheetContentController extends BottomNavigationView
private ChromeActivity mActivity;
private boolean mShouldOpenSheetOnNextContentChange;
private PlaceholderSheetContent mPlaceholderContent;
+ private boolean mOmniboxHasFocus;
public BottomSheetContentController(Context context, AttributeSet atts) {
super(context, atts);
@@ -218,11 +233,15 @@ public class BottomSheetContentController extends BottomNavigationView
* @param hasFocus Whether or not the omnibox has focus.
*/
public void onOmniboxFocusChange(boolean hasFocus) {
+ mOmniboxHasFocus = hasFocus;
+
// If the omnibox is being focused, show the placeholder.
if (hasFocus && mBottomSheet.getSheetState() != BottomSheet.SHEET_STATE_HALF
&& mBottomSheet.getSheetState() != BottomSheet.SHEET_STATE_FULL) {
mBottomSheet.showContent(mPlaceholderContent);
mBottomSheet.endTransitionAnimations();
+ if (mSelectedItemId > 0) getMenu().findItem(mSelectedItemId).setChecked(false);
+ mSelectedItemId = PLACEHOLDER_ID;
}
if (!hasFocus && mBottomSheet.getCurrentSheetContent() == mPlaceholderContent) {
@@ -234,6 +253,8 @@ public class BottomSheetContentController extends BottomNavigationView
public boolean onNavigationItemSelected(MenuItem item) {
if (mSelectedItemId == item.getItemId()) return false;
+ mBottomSheet.defocusOmnibox();
+
mSnackbarManager.dismissAllSnackbars();
showBottomSheetContent(item.getItemId());
return true;
@@ -290,7 +311,7 @@ public class BottomSheetContentController extends BottomNavigationView
// There are some bugs related to programatically selecting menu items that are fixed in
// newer support library versions.
// TODO(twellington): remove this after the support library is rolled.
- if (mSelectedItemId != 0) getMenu().findItem(mSelectedItemId).setChecked(false);
+ if (mSelectedItemId > 0) getMenu().findItem(mSelectedItemId).setChecked(false);
mSelectedItemId = navItemId;
getMenu().findItem(mSelectedItemId).setChecked(true);

Powered by Google App Engine
This is Rietveld 408576698