summaryrefslogtreecommitdiffstats
path: root/core/java
diff options
context:
space:
mode:
authorMike LeBeau <mlebeau@android.com>2009-07-22 15:04:27 -0700
committerMike LeBeau <mlebeau@android.com>2009-07-22 15:19:59 -0700
commitd4760d77e7e8ab66af0307dcae39e0a8e9d90a14 (patch)
treef7dfa53be6c455c9c95adb89b0c164aa66ded635 /core/java
parent98a44df4b4cc8cd28276ad888a7e17f81353ae44 (diff)
downloadframeworks_base-d4760d77e7e8ab66af0307dcae39e0a8e9d90a14.zip
frameworks_base-d4760d77e7e8ab66af0307dcae39e0a8e9d90a14.tar.gz
frameworks_base-d4760d77e7e8ab66af0307dcae39e0a8e9d90a14.tar.bz2
Add new hidden API setForceIgnoreOutsideTouch to AutoCompleteTextView for
use by SearchDialog. SearchDialog wants to be able to say a dropdown should not always be visible but still let it ignore outside touch when it does show. Fixes http://b/1997170
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/app/SearchDialog.java2
-rw-r--r--core/java/android/widget/AutoCompleteTextView.java17
2 files changed, 18 insertions, 1 deletions
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index 0380c90..26b5b7a 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -541,6 +541,8 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
mSearchAutoComplete.setDropDownAlwaysVisible(false);
}
+ mSearchAutoComplete.setForceIgnoreOutsideTouch(true);
+
// attach the suggestions adapter, if suggestions are available
// The existence of a suggestions authority is the proxy for "suggestions available here"
if (mSearchable.getSuggestAuthority() != null) {
diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java
index 47798a4..6848a55 100644
--- a/core/java/android/widget/AutoCompleteTextView.java
+++ b/core/java/android/widget/AutoCompleteTextView.java
@@ -116,6 +116,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
private boolean mDropDownAlwaysVisible = false;
private boolean mDropDownDismissedOnCompletion = true;
+
+ private boolean mForceIgnoreOutsideTouch = false;
private int mLastKeyCode = KeyEvent.KEYCODE_UNKNOWN;
private boolean mOpenBefore;
@@ -1142,6 +1144,8 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
heightSpec = mDropDownHeight;
}
+ mPopup.setOutsideTouchable(mForceIgnoreOutsideTouch ? false : !mDropDownAlwaysVisible);
+
mPopup.update(getDropDownAnchorView(), mDropDownHorizontalOffset,
mDropDownVerticalOffset, widthSpec, heightSpec);
} else {
@@ -1170,7 +1174,7 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
// use outside touchable to dismiss drop down when touching outside of it, so
// only set this if the dropdown is not always visible
- mPopup.setOutsideTouchable(!mDropDownAlwaysVisible);
+ mPopup.setOutsideTouchable(mForceIgnoreOutsideTouch ? false : !mDropDownAlwaysVisible);
mPopup.setTouchInterceptor(new PopupTouchIntercepter());
mPopup.showAsDropDown(getDropDownAnchorView(),
mDropDownHorizontalOffset, mDropDownVerticalOffset);
@@ -1179,6 +1183,17 @@ public class AutoCompleteTextView extends EditText implements Filter.FilterListe
post(mHideSelector);
}
}
+
+ /**
+ * Forces outside touches to be ignored. Normally if {@link #isDropDownAlwaysVisible()} is
+ * false, we allow outside touch to dismiss the dropdown. If this is set to true, then we
+ * ignore outside touch even when the drop down is not set to always visible.
+ *
+ * @hide used only by SearchDialog
+ */
+ public void setForceIgnoreOutsideTouch(boolean forceIgnoreOutsideTouch) {
+ mForceIgnoreOutsideTouch = forceIgnoreOutsideTouch;
+ }
/**
* <p>Builds the popup window's content and returns the height the popup