Merge "Support receiving touch event in the inline suggestion view" into rvc-dev

This commit is contained in:
Feng Cao
2020-05-01 22:07:39 +00:00
committed by Android (Google) Code Review
3 changed files with 23 additions and 16 deletions

View File

@@ -144,22 +144,24 @@ public abstract class InlineSuggestionRenderService extends Service {
final SurfaceControlViewHost host = new SurfaceControlViewHost(this, getDisplay(),
hostInputToken);
host.setView(suggestionRoot, lp);
suggestionRoot.setOnClickListener((v) -> {
// Set the suggestion view to be non-focusable so that if its background is set to a
// ripple drawable, the ripple won't be shown initially.
suggestionView.setFocusable(false);
suggestionView.setOnClickListener((v) -> {
try {
if (suggestionView.hasOnClickListeners()) {
suggestionView.callOnClick();
}
callback.onClick();
} catch (RemoteException e) {
Log.w(TAG, "RemoteException calling onClick()");
}
});
suggestionRoot.setOnLongClickListener((v) -> {
final View.OnLongClickListener onLongClickListener =
suggestionView.getOnLongClickListener();
suggestionView.setOnLongClickListener((v) -> {
if (onLongClickListener != null) {
onLongClickListener.onLongClick(v);
}
try {
if (suggestionView.hasOnLongClickListeners()) {
suggestionView.performLongClick();
}
callback.onLongClick();
} catch (RemoteException e) {
Log.w(TAG, "RemoteException calling onLongClick()");

View File

@@ -51,14 +51,9 @@ public class InlineSuggestionRoot extends FrameLayout {
setFocusable(false);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
@Override
@SuppressLint("ClickableViewAccessibility")
public boolean onTouchEvent(@NonNull MotionEvent event) {
public boolean dispatchTouchEvent(@NonNull MotionEvent event) {
switch (event.getActionMasked()) {
case MotionEvent.ACTION_DOWN: {
mDownX = event.getX();
@@ -80,6 +75,6 @@ public class InlineSuggestionRoot extends FrameLayout {
}
} break;
}
return super.onTouchEvent(event);
return super.dispatchTouchEvent(event);
}
}

View File

@@ -7262,6 +7262,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
return (li != null && li.mOnLongClickListener != null);
}
/**
* @return the registered {@link OnLongClickListener} if there is one, {@code null} otherwise.
* @hide
*/
@Nullable
public OnLongClickListener getOnLongClickListener() {
ListenerInfo li = mListenerInfo;
return (li != null) ? li.mOnLongClickListener : null;
}
/**
* Register a callback to be invoked when this view is context clicked. If the view is not
* context clickable, it becomes context clickable.