diff options
Diffstat (limited to 'src/com/android/launcher/Search.java')
-rw-r--r-- | src/com/android/launcher/Search.java | 36 |
1 files changed, 33 insertions, 3 deletions
diff --git a/src/com/android/launcher/Search.java b/src/com/android/launcher/Search.java index d33fd69fa..522a43262 100644 --- a/src/com/android/launcher/Search.java +++ b/src/com/android/launcher/Search.java @@ -57,8 +57,6 @@ import android.widget.TextView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; -import java.util.List; - public class Search extends LinearLayout implements OnClickListener, OnKeyListener, OnLongClickListener, TextWatcher, OnItemClickListener, OnItemSelectedListener { @@ -81,6 +79,7 @@ public class Search extends LinearLayout implements OnClickListener, OnKeyListen private Intent mVoiceSearchIntent; private Rect mTempRect = new Rect(); + private boolean mRestoreFocus = false; /** * Used to inflate the Workspace from XML. @@ -170,7 +169,26 @@ public class Search extends LinearLayout implements OnClickListener, OnKeyListen getContext().startActivity(launcher); } - + + @Override + public void onWindowFocusChanged(boolean hasWindowFocus) { + if (!hasWindowFocus && hasFocus()) { + mRestoreFocus = true; + } + + super.onWindowFocusChanged(hasWindowFocus); + + if (hasWindowFocus && mRestoreFocus) { + if (isInTouchMode()) { + final AutoCompleteTextView searchText = mSearchText; + searchText.setSelectAllOnFocus(false); + searchText.requestFocusFromTouch(); + searchText.setSelectAllOnFocus(true); + } + mRestoreFocus = false; + } + } + /** * Implements TextWatcher (for EditText) */ @@ -371,6 +389,18 @@ public class Search extends LinearLayout implements OnClickListener, OnKeyListen } /** + * Remove internal cursor references when detaching from window which + * prevents {@link Context} leaks. + */ + @Override + public void onDetachedFromWindow() { + if (mSuggestionsAdapter != null) { + mSuggestionsAdapter.changeCursor(null); + mSuggestionsAdapter = null; + } + } + + /** * Implements OnItemClickListener */ public void onItemClick(AdapterView<?> parent, View view, int position, long id) { |