Merge "Add support for multiple focus listeners to ExtendedEditText." into tm-qpr-dev am: 6e192cd7f8
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/20508310 Change-Id: I98cacbb689046dee91fbb8a986522766149a2496 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -18,6 +18,7 @@ package com.android.launcher3;
|
||||
import static com.android.launcher3.logging.KeyboardStateManager.KeyboardState.SHOW;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Rect;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.DragEvent;
|
||||
@@ -27,12 +28,17 @@ import android.widget.EditText;
|
||||
|
||||
import com.android.launcher3.views.ActivityContext;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
/**
|
||||
* The edit text that reports back when the back key has been pressed.
|
||||
* Note: AppCompatEditText doesn't fully support #displayCompletions and #onCommitCompletion
|
||||
*/
|
||||
public class ExtendedEditText extends EditText {
|
||||
private final Set<OnFocusChangeListener> mOnFocusChangeListeners = new HashSet<>();
|
||||
|
||||
private boolean mForceDisableSuggestions = false;
|
||||
|
||||
/**
|
||||
@@ -129,4 +135,28 @@ public class ExtendedEditText extends EditText {
|
||||
setText("");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method should be preferred to {@link #setOnFocusChangeListener(OnFocusChangeListener)},
|
||||
* as it allows for multiple listeners from different sources.
|
||||
*/
|
||||
public void addOnFocusChangeListener(OnFocusChangeListener listener) {
|
||||
mOnFocusChangeListeners.add(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes the given listener from the set of registered focus listeners, or does nothing if it
|
||||
* wasn't registered in the first place.
|
||||
*/
|
||||
public void removeOnFocusChangeListener(OnFocusChangeListener listener) {
|
||||
mOnFocusChangeListeners.remove(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
|
||||
super.onFocusChanged(focused, direction, previouslyFocusedRect);
|
||||
for (OnFocusChangeListener listener : mOnFocusChangeListeners) {
|
||||
listener.onFocusChange(this, focused);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ public class AllAppsSearchBarController
|
||||
mInput.addTextChangedListener(this);
|
||||
mInput.setOnEditorActionListener(this);
|
||||
mInput.setOnBackKeyListener(this);
|
||||
mInput.setOnFocusChangeListener(this);
|
||||
mInput.addOnFocusChangeListener(this);
|
||||
mSearchAlgorithm = searchAlgorithm;
|
||||
}
|
||||
|
||||
@@ -153,6 +153,7 @@ public class AllAppsSearchBarController
|
||||
mCallback.clearSearchResult();
|
||||
mInput.reset();
|
||||
mQuery = null;
|
||||
mInput.removeOnFocusChangeListener(this);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -282,7 +282,6 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo
|
||||
mFolderName = findViewById(R.id.folder_name);
|
||||
mFolderName.setTextSize(TypedValue.COMPLEX_UNIT_PX, dp.folderLabelTextSizePx);
|
||||
mFolderName.setOnBackKeyListener(this);
|
||||
mFolderName.setOnFocusChangeListener(this);
|
||||
mFolderName.setOnEditorActionListener(this);
|
||||
mFolderName.setSelectAllOnFocus(true);
|
||||
mFolderName.setInputType(mFolderName.getInputType()
|
||||
@@ -457,6 +456,13 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo
|
||||
// the folder itself.
|
||||
requestFocus();
|
||||
super.onAttachedToWindow();
|
||||
mFolderName.addOnFocusChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDetachedFromWindow() {
|
||||
super.onDetachedFromWindow();
|
||||
mFolderName.removeOnFocusChangeListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user