Ignore clicks on shortcuts' drag handles.
am: e04a07f6ac
Change-Id: I96360a63524edeff3e2aa9b21707c1c81a79012f
This commit is contained in:
@@ -161,7 +161,7 @@
|
|||||||
<dimen name="deep_shortcuts_spacing">4dp</dimen>
|
<dimen name="deep_shortcuts_spacing">4dp</dimen>
|
||||||
<dimen name="deep_shortcuts_drag_view_scale">6dp</dimen>
|
<dimen name="deep_shortcuts_drag_view_scale">6dp</dimen>
|
||||||
<!-- an icon with shortcuts must be dragged this far before the container is removed. -->
|
<!-- 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_icon_size">36dp</dimen>
|
||||||
<dimen name="deep_shortcut_padding_start">6dp</dimen>
|
<dimen name="deep_shortcut_padding_start">6dp</dimen>
|
||||||
<dimen name="deep_shortcut_padding_end">16dp</dimen>
|
<dimen name="deep_shortcut_padding_end">16dp</dimen>
|
||||||
|
|||||||
@@ -17,15 +17,23 @@
|
|||||||
package com.android.launcher3.shortcuts;
|
package com.android.launcher3.shortcuts;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Resources;
|
||||||
|
import android.graphics.Rect;
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
|
||||||
import com.android.launcher3.BubbleTextView;
|
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.
|
* A {@link BubbleTextView} that has the shortcut icon on the left and drag handle on the right.
|
||||||
*/
|
*/
|
||||||
public class DeepShortcutTextView extends BubbleTextView {
|
public class DeepShortcutTextView extends BubbleTextView {
|
||||||
|
private final Rect mDragHandleBounds = new Rect();
|
||||||
|
private final int mDragHandleWidth;
|
||||||
|
private boolean mShouldPerformClick = true;
|
||||||
|
|
||||||
public DeepShortcutTextView(Context context) {
|
public DeepShortcutTextView(Context context) {
|
||||||
this(context, null, 0);
|
this(context, null, 0);
|
||||||
@@ -37,10 +45,39 @@ public class DeepShortcutTextView extends BubbleTextView {
|
|||||||
|
|
||||||
public DeepShortcutTextView(Context context, AttributeSet attrs, int defStyle) {
|
public DeepShortcutTextView(Context context, AttributeSet attrs, int defStyle) {
|
||||||
super(context, attrs, 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
|
@Override
|
||||||
protected void applyCompoundDrawables(Drawable icon) {
|
protected void applyCompoundDrawables(Drawable icon) {
|
||||||
// The icon is drawn in a separate view.
|
// 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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user