AI 143733: Fix for issue 1648553: IME overlaps over focus ring in gmail search box. In WebView::requestChildRectangleOnScreen we now move a rectangle up if its bottom is offscreen, even if its top is not. We also move it so that its top is at the top third of the WebView's height (if it still fits on screen) so that you can see space (and potentially other input fields) below it.
BUG=1648553 Automated import of CL 143733
This commit is contained in:
committed by
The Android Open Source Project
parent
c38c0f6b98
commit
bed911a44a
@@ -4405,14 +4405,19 @@ public class WebView extends AbsoluteLayout
|
||||
|
||||
int scrollYDelta = 0;
|
||||
|
||||
if (rect.bottom > screenBottom && rect.top > screenTop) {
|
||||
if (rect.height() > height) {
|
||||
scrollYDelta += (rect.top - screenTop);
|
||||
if (rect.bottom > screenBottom) {
|
||||
int oneThirdOfScreenHeight = height / 3;
|
||||
if (rect.height() > 2 * oneThirdOfScreenHeight) {
|
||||
// If the rectangle is too tall to fit in the bottom two thirds
|
||||
// of the screen, place it at the top.
|
||||
scrollYDelta = rect.top - screenTop;
|
||||
} else {
|
||||
scrollYDelta += (rect.bottom - screenBottom);
|
||||
// If the rectangle will still fit on screen, we want its
|
||||
// top to be in the top third of the screen.
|
||||
scrollYDelta = rect.top - (screenTop + oneThirdOfScreenHeight);
|
||||
}
|
||||
} else if (rect.top < screenTop) {
|
||||
scrollYDelta -= (screenTop - rect.top);
|
||||
scrollYDelta = rect.top - screenTop;
|
||||
}
|
||||
|
||||
int width = getWidth() - getVerticalScrollbarWidth();
|
||||
|
||||
Reference in New Issue
Block a user