Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6bb6711f authored by Tony Wickham's avatar Tony Wickham Committed by android-build-merger
Browse files

Ignore clicks on shortcuts' drag handles.

am: e04a07f6

Change-Id: I96360a63524edeff3e2aa9b21707c1c81a79012f
parents c9a0a7c6 e04a07f6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -161,7 +161,7 @@
    <dimen name="deep_shortcuts_spacing">4dp</dimen>
    <dimen name="deep_shortcuts_drag_view_scale">6dp</dimen>
    <!-- an icon with shortcuts must be dragged this far before the container is removed. -->
    <dimen name="deep_shortcuts_start_drag_threshold">12dp</dimen>
    <dimen name="deep_shortcuts_start_drag_threshold">16dp</dimen>
    <dimen name="deep_shortcut_icon_size">36dp</dimen>
    <dimen name="deep_shortcut_padding_start">6dp</dimen>
    <dimen name="deep_shortcut_padding_end">16dp</dimen>
+37 −0
Original line number Diff line number Diff line
@@ -17,15 +17,23 @@
package com.android.launcher3.shortcuts;

import android.content.Context;
import android.content.res.Resources;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.MotionEvent;

import com.android.launcher3.BubbleTextView;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;

/**
 * A {@link BubbleTextView} that has the shortcut icon on the left and drag handle on the right.
 */
public class DeepShortcutTextView extends BubbleTextView {
    private final Rect mDragHandleBounds = new Rect();
    private final int mDragHandleWidth;
    private boolean mShouldPerformClick = true;

    public DeepShortcutTextView(Context context) {
        this(context, null, 0);
@@ -37,10 +45,39 @@ public class DeepShortcutTextView extends BubbleTextView {

    public DeepShortcutTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);

        Resources resources = getResources();
        mDragHandleWidth = resources.getDimensionPixelSize(R.dimen.deep_shortcut_padding_end)
                + resources.getDimensionPixelSize(R.dimen.deep_shortcut_drag_handle_size)
                + resources.getDimensionPixelSize(R.dimen.deep_shortcut_drawable_padding) / 2;
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        mDragHandleBounds.set(0, 0, mDragHandleWidth, getMeasuredHeight());
        if (!Utilities.isRtl(getResources())) {
            mDragHandleBounds.offset(getMeasuredWidth() - mDragHandleBounds.width(), 0);
        }
    }

    @Override
    protected void applyCompoundDrawables(Drawable icon) {
        // The icon is drawn in a separate view.
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
            // Ignore clicks on the drag handle (long clicks still start the drag).
            mShouldPerformClick = !mDragHandleBounds.contains((int) ev.getX(), (int) ev.getY());
        }
        return super.onTouchEvent(ev);
    }

    @Override
    public boolean performClick() {
        return mShouldPerformClick && super.performClick();
    }
}