am 56e1b7e4: Fix emoji view insets calculation

* commit '56e1b7e4f112a268371c84606e6f4239aef91333':
  Fix emoji view insets calculation
main
Ken Wakasa 2013-08-30 06:35:15 -07:00 committed by Android Git Automerger
commit eb06bf7622
2 changed files with 25 additions and 9 deletions

View File

@ -308,6 +308,20 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mState.onCodeInput(code, mLatinIME.getCurrentAutoCapsState()); mState.onCodeInput(code, mLatinIME.getCurrentAutoCapsState());
} }
public boolean isShowingMoreKeysPanel() {
if (mEmojiKeyboardView.getVisibility() == View.VISIBLE) {
return false;
}
return mKeyboardView.isShowingMoreKeysPanel();
}
public View getVisibleKeyboardView() {
if (mEmojiKeyboardView.getVisibility() == View.VISIBLE) {
return mEmojiKeyboardView;
}
return mKeyboardView;
}
public MainKeyboardView getMainKeyboardView() { public MainKeyboardView getMainKeyboardView() {
return mKeyboardView; return mKeyboardView;
} }

View File

@ -1177,11 +1177,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
return currentHeight; return currentHeight;
} }
final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView(); final View visibleKeyboardView = mKeyboardSwitcher.getVisibleKeyboardView();
if (mainKeyboardView == null) { if (visibleKeyboardView == null) {
return 0; return 0;
} }
final int keyboardHeight = mainKeyboardView.getHeight(); // TODO: !!!!!!!!!!!!!!!!!!!! Handle different backing view heights between the main !!!
// keyboard and the emoji keyboard. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
final int keyboardHeight = visibleKeyboardView.getHeight();
final int suggestionsHeight = mSuggestionStripView.getHeight(); final int suggestionsHeight = mSuggestionStripView.getHeight();
final int displayHeight = getResources().getDisplayMetrics().heightPixels; final int displayHeight = getResources().getDisplayMetrics().heightPixels;
final Rect rect = new Rect(); final Rect rect = new Rect();
@ -1199,8 +1201,8 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
@Override @Override
public void onComputeInsets(final InputMethodService.Insets outInsets) { public void onComputeInsets(final InputMethodService.Insets outInsets) {
super.onComputeInsets(outInsets); super.onComputeInsets(outInsets);
final MainKeyboardView mainKeyboardView = mKeyboardSwitcher.getMainKeyboardView(); final View visibleKeyboardView = mKeyboardSwitcher.getVisibleKeyboardView();
if (mainKeyboardView == null || mSuggestionStripView == null) { if (visibleKeyboardView == null || mSuggestionStripView == null) {
return; return;
} }
final int adjustedBackingHeight = getAdjustedBackingViewHeight(); final int adjustedBackingHeight = getAdjustedBackingViewHeight();
@ -1215,13 +1217,13 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
final int extraHeight = extractHeight + backingHeight + suggestionsHeight; final int extraHeight = extractHeight + backingHeight + suggestionsHeight;
int visibleTopY = extraHeight; int visibleTopY = extraHeight;
// Need to set touchable region only if input view is being shown // Need to set touchable region only if input view is being shown
if (mainKeyboardView.isShown()) { if (visibleKeyboardView.isShown()) {
if (mSuggestionStripView.getVisibility() == View.VISIBLE) { if (mSuggestionStripView.getVisibility() == View.VISIBLE) {
visibleTopY -= suggestionsHeight; visibleTopY -= suggestionsHeight;
} }
final int touchY = mainKeyboardView.isShowingMoreKeysPanel() ? 0 : visibleTopY; final int touchY = mKeyboardSwitcher.isShowingMoreKeysPanel() ? 0 : visibleTopY;
final int touchWidth = mainKeyboardView.getWidth(); final int touchWidth = visibleKeyboardView.getWidth();
final int touchHeight = mainKeyboardView.getHeight() + extraHeight final int touchHeight = visibleKeyboardView.getHeight() + extraHeight
// Extend touchable region below the keyboard. // Extend touchable region below the keyboard.
+ EXTENDED_TOUCHABLE_REGION_HEIGHT; + EXTENDED_TOUCHABLE_REGION_HEIGHT;
outInsets.touchableInsets = InputMethodService.Insets.TOUCHABLE_INSETS_REGION; outInsets.touchableInsets = InputMethodService.Insets.TOUCHABLE_INSETS_REGION;