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

Commit 770f7c59 authored by Mady Mellor's avatar Mady Mellor
Browse files

Stylus support: handling drag n drop for widgets

This alters the widget host view code to consider stylus button presses
allowing the user to pick up widgets with a stylus button press, and drop
them by releasing the button.

Bug: 20430722
Change-Id: I359f72bd80016f4b313aab1325cc92d7c6fd2a8c
parent 585b764a
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc
    LayoutInflater mInflater;

    private CheckLongPressHelper mLongPressHelper;
    private StylusEventHelper mStylusEventHelper;
    private Context mContext;
    private int mPreviousOrientation;
    private DragLayer mDragLayer;
@@ -46,6 +47,7 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc
        super(context);
        mContext = context;
        mLongPressHelper = new CheckLongPressHelper(this);
        mStylusEventHelper = new StylusEventHelper(this);
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mDragLayer = ((Launcher) context).getDragLayer();
        setAccessibilityDelegate(LauncherAppState.getInstance().getAccessibilityDelegate());
@@ -89,11 +91,17 @@ public class LauncherAppWidgetHostView extends AppWidgetHostView implements Touc
            return true;
        }

        // Watch for longpress events at this level to make sure
        // users can always pick up this widget
        // Watch for longpress or stylus button press events at this level to
        // make sure users can always pick up this widget
        if (mStylusEventHelper.checkAndPerformStylusEvent(ev)) {
            mLongPressHelper.cancelLongPress();
            return true;
        }
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN: {
                if (!mStylusEventHelper.inStylusButtonPressed()) {
                    mLongPressHelper.postCheckForLongPress();
                }
                mDragLayer.setTouchCompleteListener(this);
                break;
            }