diff options
| -rw-r--r-- | core/java/android/service/autofill/InlineSuggestionRenderService.java | 20 | ||||
| -rw-r--r-- | core/java/android/service/autofill/InlineSuggestionRoot.java | 9 | ||||
| -rw-r--r-- | core/java/android/view/View.java | 10 |
3 files changed, 23 insertions, 16 deletions
diff --git a/core/java/android/service/autofill/InlineSuggestionRenderService.java b/core/java/android/service/autofill/InlineSuggestionRenderService.java index 19961e5efc6a..6c22b1936d74 100644 --- a/core/java/android/service/autofill/InlineSuggestionRenderService.java +++ b/core/java/android/service/autofill/InlineSuggestionRenderService.java @@ -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()"); diff --git a/core/java/android/service/autofill/InlineSuggestionRoot.java b/core/java/android/service/autofill/InlineSuggestionRoot.java index 653e513f13d8..c879653859d8 100644 --- a/core/java/android/service/autofill/InlineSuggestionRoot.java +++ b/core/java/android/service/autofill/InlineSuggestionRoot.java @@ -52,13 +52,8 @@ public class InlineSuggestionRoot extends FrameLayout { } @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); } } diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index f98c1f660cfa..da0671f3597b 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -7263,6 +7263,16 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } /** + * @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. * |