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

Commit 516c6e2e authored by Sailesh Nepal's avatar Sailesh Nepal
Browse files

Fix bug where a starred contact couldn't be removed

Removing a starred contact was broken on NYC. The problem was that the
code assumed ACTION_DRAG_STARTED had coordinates that were view
relative. On NYC the coordinates were window relative.

This is a cherry pick of http://cl/122480283 and http://cl/123125613

Bug: 29074238
Change-Id: Ib090c6240ed65e4333ad63b3ab4f8b4744181b13
(cherry picked from commit 198074d959385599e952656d0a1b2a306f54e56f)
parent 8646f14a
Loading
Loading
Loading
Loading
+16 −4
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@ package com.android.dialer.list;
import android.util.Log;
import android.view.View;

import com.android.contacts.common.compat.CompatUtils;

import java.util.ArrayList;
import java.util.List;

@@ -33,13 +35,23 @@ public class DragDropController {
    /**
     * @return True if the drag is started, false if the drag is cancelled for some reason.
     */
    boolean handleDragStarted(int x, int y) {
        final PhoneFavoriteSquareTileView tileView = mDragItemContainer.getViewForLocation(x, y);
    boolean handleDragStarted(View v, int x, int y) {
        int screenX = x;
        int screenY = y;
        // The coordinates in dragEvent of DragEvent.ACTION_DRAG_STARTED before NYC is window-related.
        // This is fixed in NYC.
        if (CompatUtils.isNCompatible()) {
            v.getLocationOnScreen(mLocationOnScreen);
            screenX = x + mLocationOnScreen[0];
            screenY = y + mLocationOnScreen[1];
        }
        final PhoneFavoriteSquareTileView tileView = mDragItemContainer.getViewForLocation(
                screenX, screenY);
        if (tileView == null) {
            return false;
        }
        for (int i = 0; i < mOnDragDropListeners.size(); i++) {
            mOnDragDropListeners.get(i).onDragStarted(x, y, tileView);
            mOnDragDropListeners.get(i).onDragStarted(screenX, screenY, tileView);
        }

        return true;
+1 −1
Original line number Diff line number Diff line
@@ -155,7 +155,7 @@ public class PhoneFavoriteListView extends GridView implements OnDragDropListene
                    // on a {@link PhoneFavoriteTileView}
                    return false;
                }
                if (!mDragDropController.handleDragStarted(eX, eY)) {
                if (!mDragDropController.handleDragStarted(this, eX, eY)) {
                    return false;
                }
                break;