diff options
author | Michael Kolb <kolby@google.com> | 2011-02-14 14:34:40 -0800 |
---|---|---|
committer | Michael Kolb <kolby@google.com> | 2011-02-16 15:14:48 -0800 |
commit | dc2ee1bfb50b7bec0cf3215e3d298b246dc71101 (patch) | |
tree | 1641929283f1c1712799418498ea2a332530dce7 /src/com/android/browser/UrlInputView.java | |
parent | 617fd83615f490817db7d288d732d6cdd0b47ae5 (diff) | |
download | android_packages_apps_Gello-dc2ee1bfb50b7bec0cf3215e3d298b246dc71101.tar.gz android_packages_apps_Gello-dc2ee1bfb50b7bec0cf3215e3d298b246dc71101.tar.bz2 android_packages_apps_Gello-dc2ee1bfb50b7bec0cf3215e3d298b246dc71101.zip |
fix shortcut handling
Bugs: 3400078
3270434
3368141
3381411
Fixed controller to check for menu & ctrl keys for shortcuts
Changed focus handling in url bar
Keyboard focus transitions are not 100% working yet, but it's possible
to navigate to all the elements
Change-Id: I514d85a37dae2589e3ce1ecb18c7fc0bf4e715f3
Diffstat (limited to 'src/com/android/browser/UrlInputView.java')
-rw-r--r-- | src/com/android/browser/UrlInputView.java | 82 |
1 files changed, 40 insertions, 42 deletions
diff --git a/src/com/android/browser/UrlInputView.java b/src/com/android/browser/UrlInputView.java index 1f15b327..2ec21111 100644 --- a/src/com/android/browser/UrlInputView.java +++ b/src/com/android/browser/UrlInputView.java @@ -29,7 +29,6 @@ import android.util.AttributeSet; import android.util.Patterns; import android.view.KeyEvent; import android.view.View; -import android.view.View.OnFocusChangeListener; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; @@ -44,7 +43,7 @@ import java.util.List; * handling suggestions */ public class UrlInputView extends AutoCompleteTextView - implements OnFocusChangeListener, OnEditorActionListener, + implements OnEditorActionListener, CompletionListener, OnItemClickListener { @@ -55,12 +54,11 @@ public class UrlInputView extends AutoCompleteTextView private UrlInputListener mListener; private InputMethodManager mInputManager; private SuggestionsAdapter mAdapter; - private OnFocusChangeListener mWrappedFocusListener; private View mContainer; private boolean mLandscape; - private boolean mInVoiceMode; private boolean mIncognitoMode; private int mVOffset; + private boolean mNeedsUpdate; public UrlInputView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); @@ -80,7 +78,6 @@ public class UrlInputView extends AutoCompleteTextView private void init(Context ctx) { mInputManager = (InputMethodManager) ctx.getSystemService(Context.INPUT_METHOD_SERVICE); setOnEditorActionListener(this); - super.setOnFocusChangeListener(this); mAdapter = new SuggestionsAdapter(ctx, this); setAdapter(mAdapter); setSelectAllOnFocus(true); @@ -88,6 +85,21 @@ public class UrlInputView extends AutoCompleteTextView setThreshold(1); setOnItemClickListener(this); mVOffset = 0; + mNeedsUpdate = false; + } + + /** + * check if focus change requires a title bar update + */ + boolean needsUpdate() { + return mNeedsUpdate; + } + + /** + * clear the focus change needs title bar update flag + */ + void clearNeedsUpdate() { + mNeedsUpdate = false; } void setController(UiController controller) { @@ -107,9 +119,12 @@ public class UrlInputView extends AutoCompleteTextView mContainer = container; } + public void setUrlInputListener(UrlInputListener listener) { + mListener = listener; + } + void setVoiceResults(List<String> voiceResults) { mAdapter.setVoiceResults(voiceResults); - mInVoiceMode = (voiceResults != null); } @Override @@ -148,43 +163,28 @@ public class UrlInputView extends AutoCompleteTextView } @Override - public void setOnFocusChangeListener(OnFocusChangeListener focusListener) { - mWrappedFocusListener = focusListener; - } - - @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { finishInput(getText().toString(), null, TYPED); return true; } - @Override - public void onFocusChange(View v, boolean hasFocus) { - if (mWrappedFocusListener != null) { - mWrappedFocusListener.onFocusChange(v, hasFocus); - } - if (hasFocus) { - forceIme(); - if (mInVoiceMode) { - performFiltering(getText().toString(), 0); - showDropDown(); - } - } else { - finishInput(null, null, null); - } + void forceFilter() { + performFiltering(getText().toString(), 0); + showDropDown(); } - public void setUrlInputListener(UrlInputListener listener) { - mListener = listener; - } - - public void forceIme() { + void forceIme() { mInputManager.focusIn(this); mInputManager.showSoftInput(this, 0); } + void hideIME() { + mInputManager.hideSoftInputFromWindow(getWindowToken(), 0); + } + private void finishInput(String url, String extra, String source) { - this.dismissDropDown(); + mNeedsUpdate = true; + dismissDropDown(); mInputManager.hideSoftInputFromWindow(getWindowToken(), 0); if (TextUtils.isEmpty(url)) { mListener.onDismiss(); @@ -230,17 +230,6 @@ public class UrlInputView extends AutoCompleteTextView } @Override - public boolean onKeyPreIme(int keyCode, KeyEvent evt) { - if ((evt.getAction() == KeyEvent.ACTION_DOWN) - && (keyCode == KeyEvent.KEYCODE_BACK)) { - // catch back key in order to do slightly more cleanup than usual - clearFocus(); - return true; - } - return super.onKeyPreIme(keyCode, evt); - } - - @Override public void onItemClick( AdapterView<?> parent, View view, int position, long id) { SuggestItem item = mAdapter.getItem(position); @@ -263,4 +252,13 @@ public class UrlInputView extends AutoCompleteTextView mAdapter.setIncognitoMode(mIncognitoMode); } + @Override + public boolean onKeyDown(int keyCode, KeyEvent evt) { + if (keyCode == KeyEvent.KEYCODE_ESCAPE && !isInTouchMode()) { + finishInput(null, null, null); + return true; + } + return super.onKeyDown(keyCode, evt); + } + } |