am da3e077e: Merge "Add drag to open functionality to Dialer overflow menu" into klp-dev

* commit 'da3e077e2472585f48d64a8f4e192de2b5f69f6a':
  Add drag to open functionality to Dialer overflow menu
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 572a4f1..3e65916 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -141,6 +141,7 @@
     private View mMenuButton;
     private View mCallHistoryButton;
     private View mDialpadButton;
+    private PopupMenu mOverflowMenu;
 
     // Padding view used to shift the fragments up when the dialpad is shown.
     private View mBottomPaddingView;
@@ -182,6 +183,20 @@
         }
     };
 
+    private class OverflowPopupMenu extends PopupMenu {
+        public OverflowPopupMenu(Context context, View anchor) {
+            super(context, anchor);
+        }
+
+        @Override
+        public void show() {
+            final Menu menu = getMenu();
+            final MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
+            clearFrequents.setVisible(mPhoneFavoriteFragment.hasFrequents());
+            super.show();
+        }
+    }
+
     /**
      * Listener used when one of phone numbers in search UI is selected. This will initiate a
      * phone call using the phone number.
@@ -409,13 +424,7 @@
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.overflow_menu: {
-                final PopupMenu popupMenu = new PopupMenu(DialtactsActivity.this, view);
-                final Menu menu = popupMenu.getMenu();
-                popupMenu.inflate(R.menu.dialtacts_options);
-                final MenuItem clearFrequents = menu.findItem(R.id.menu_clear_frequents);
-                clearFrequents.setVisible(mPhoneFavoriteFragment.hasFrequents());
-                popupMenu.setOnMenuItemClickListener(this);
-                popupMenu.show();
+                mOverflowMenu.show();
                 break;
             }
             case R.id.dialpad_button:
@@ -591,6 +600,12 @@
         mMenuButton = findViewById(R.id.overflow_menu);
         if (mMenuButton != null) {
             mMenuButton.setOnClickListener(this);
+
+            mOverflowMenu = new OverflowPopupMenu(DialtactsActivity.this, mMenuButton);
+            final Menu menu = mOverflowMenu.getMenu();
+            mOverflowMenu.inflate(R.menu.dialtacts_options);
+            mOverflowMenu.setOnMenuItemClickListener(this);
+            mMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
         }
 
         mCallHistoryButton = findViewById(R.id.call_history_button);