Support mouse right click on HomeScreen to show the customization menu

Bug: b/250089861
Fix: b/250089861
Test: Manual Testing
Video: https://b.corp.google.com/action/issues/250089861/attachments/40243664?download=true
Change-Id: Ia23e302bf8f3e18fafd6ccd079740c8005ae7860
This commit is contained in:
Fengjiang Li
2022-12-06 21:53:25 -08:00
parent e8c57e94e7
commit a6a67e347d
4 changed files with 117 additions and 12 deletions

View File

@@ -17,11 +17,12 @@
package com.android.launcher3;
import android.os.Handler;
import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import com.android.launcher3.util.TouchUtil;
/**
* Utility class to handle tripper long press or right click on a view with custom timeout and
* stylus event
@@ -64,7 +65,7 @@ public class CheckLongPressHelper {
cancelLongPress();
// Mouse right click should immediately trigger a long press
if (isMouseRightClickDownOrMove(ev)) {
if (TouchUtil.isMouseRightClickDownOrMove(ev)) {
mIsInMouseRightClick = true;
triggerLongPress();
final Handler handler = mView.getHandler();
@@ -176,14 +177,4 @@ public class CheckLongPressHelper {
return event.getToolType(0) == MotionEvent.TOOL_TYPE_STYLUS
&& event.isButtonPressed(MotionEvent.BUTTON_SECONDARY);
}
/**
* Detect ACTION_DOWN or ACTION_MOVE from mouse right button. Note that we cannot detect
* ACTION_UP from mouse's right button because, in that case,
* {@link MotionEvent#getButtonState()} returns 0 for any mouse button (right, middle, right).
*/
private static boolean isMouseRightClickDownOrMove(MotionEvent event) {
return event.isFromSource(InputDevice.SOURCE_MOUSE)
&& ((event.getButtonState() & MotionEvent.BUTTON_SECONDARY) != 0);
}
}