Show key preview instantaneously

This change will display the key board preview instantaneously when
the key is pressed.  Dismissing the key preview will be delayed
slightly after the key is released, as we do now.

Because in multi touch mode, we should instantaneously change keyboard
layout when modifier key, such as shit and symbol, is pressed.

Change-Id: I49348d563ca0f40f5a0a236bdcd0bb07eedd599b
main
Tadashi G. Takaoka 2010-08-27 18:27:53 +09:00
parent 7986d78328
commit 09f530e248
1 changed files with 4 additions and 28 deletions

View File

@ -178,7 +178,6 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
/** Listener for {@link OnKeyboardActionListener}. */ /** Listener for {@link OnKeyboardActionListener}. */
private OnKeyboardActionListener mKeyboardActionListener; private OnKeyboardActionListener mKeyboardActionListener;
private static final int DELAY_BEFORE_PREVIEW = 0;
private static final int DELAY_AFTER_PREVIEW = 70; private static final int DELAY_AFTER_PREVIEW = 70;
private static final int DEBOUNCE_TIME = 70; private static final int DEBOUNCE_TIME = 70;
@ -245,19 +244,15 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
UIHandler mHandler = new UIHandler(); UIHandler mHandler = new UIHandler();
class UIHandler extends Handler { class UIHandler extends Handler {
private static final int MSG_POPUP_PREVIEW = 1; private static final int MSG_DISMISS_PREVIEW = 0;
private static final int MSG_DISMISS_PREVIEW = 2; private static final int MSG_REPEAT_KEY = 1;
private static final int MSG_REPEAT_KEY = 3; private static final int MSG_LOGPRESS_KEY = 2;
private static final int MSG_LOGPRESS_KEY = 4;
private boolean mInKeyRepeat; private boolean mInKeyRepeat;
@Override @Override
public void handleMessage(Message msg) { public void handleMessage(Message msg) {
switch (msg.what) { switch (msg.what) {
case MSG_POPUP_PREVIEW:
showKey(msg.arg1);
break;
case MSG_DISMISS_PREVIEW: case MSG_DISMISS_PREVIEW:
mPreviewText.setVisibility(INVISIBLE); mPreviewText.setVisibility(INVISIBLE);
break; break;
@ -271,15 +266,6 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
} }
} }
public void popupPreview(int keyIndex, long delay) {
removeMessages(MSG_POPUP_PREVIEW);
sendMessageDelayed(obtainMessage(MSG_POPUP_PREVIEW, keyIndex, 0), delay);
}
public void cancelPopupPreview() {
removeMessages(MSG_POPUP_PREVIEW);
}
public void dismissPreview(long delay) { public void dismissPreview(long delay) {
sendMessageDelayed(obtainMessage(MSG_DISMISS_PREVIEW), delay); sendMessageDelayed(obtainMessage(MSG_DISMISS_PREVIEW), delay);
} }
@ -318,7 +304,6 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
public void cancelAllMessages() { public void cancelAllMessages() {
cancelKeyTimers(); cancelKeyTimers();
cancelPopupPreview();
cancelDismissPreview(); cancelDismissPreview();
} }
}; };
@ -613,7 +598,6 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
} }
// Remove any pending messages, except dismissing preview // Remove any pending messages, except dismissing preview
mHandler.cancelKeyTimers(); mHandler.cancelKeyTimers();
mHandler.cancelPopupPreview();
mKeyboard = keyboard; mKeyboard = keyboard;
LatinImeLogger.onSetKeyboard(mKeyboard); LatinImeLogger.onSetKeyboard(mKeyboard);
List<Key> keys = mKeyboard.getKeys(); List<Key> keys = mKeyboard.getKeys();
@ -985,17 +969,11 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
// If key changed and preview is on ... // If key changed and preview is on ...
if (oldKeyIndex != mCurrentKeyIndex && mShowPreview) { if (oldKeyIndex != mCurrentKeyIndex && mShowPreview) {
if (keyIndex == NOT_A_KEY) { if (keyIndex == NOT_A_KEY) {
mHandler.cancelPopupPreview();
if (previewPopup.isShowing()) { if (previewPopup.isShowing()) {
mHandler.dismissPreview(DELAY_AFTER_PREVIEW); mHandler.dismissPreview(DELAY_AFTER_PREVIEW);
} }
} else { } else {
if (previewPopup.isShowing() && mPreviewText.getVisibility() == VISIBLE) {
// Show right away, if it's already visible and finger is moving around
showKey(keyIndex); showKey(keyIndex);
} else {
mHandler.popupPreview(keyIndex, DELAY_BEFORE_PREVIEW);
}
} }
} }
} }
@ -1372,7 +1350,6 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
int keyIndex = mProximityKeyDetector.getKeyIndexAndNearbyCodes(touchX, touchY, null); int keyIndex = mProximityKeyDetector.getKeyIndexAndNearbyCodes(touchX, touchY, null);
boolean wasInKeyRepeat = mHandler.isInKeyRepeat(); boolean wasInKeyRepeat = mHandler.isInKeyRepeat();
mHandler.cancelKeyTimers(); mHandler.cancelKeyTimers();
mHandler.cancelPopupPreview();
if (mDebouncer.isMinorMoveBounce(touchX, touchY, keyIndex, mCurrentKey)) { if (mDebouncer.isMinorMoveBounce(touchX, touchY, keyIndex, mCurrentKey)) {
mDebouncer.updateTimeDebouncing(eventTime); mDebouncer.updateTimeDebouncing(eventTime);
} else { } else {
@ -1395,7 +1372,6 @@ public class LatinKeyboardBaseView extends View implements View.OnClickListener
private void onCancelEvent(int touchX, int touchY, long eventTime) { private void onCancelEvent(int touchX, int touchY, long eventTime) {
mHandler.cancelKeyTimers(); mHandler.cancelKeyTimers();
mHandler.cancelPopupPreview();
dismissPopupKeyboard(); dismissPopupKeyboard();
mAbortKey = true; mAbortKey = true;
showPreview(NOT_A_KEY); showPreview(NOT_A_KEY);