Loading services/core/java/com/android/server/wm/TaskTapPointerEventListener.java +4 −42 Original line number Diff line number Diff line Loading @@ -34,13 +34,7 @@ import static android.view.PointerIcon.STYLE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW; import static android.view.PointerIcon.STYLE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW; public class TaskTapPointerEventListener implements PointerEventListener { private static final int TAP_TIMEOUT_MSEC = 300; private static final float TAP_MOTION_SLOP_INCHES = 0.125f; private final int mMotionSlop; private float mDownX; private float mDownY; private int mPointerId; final private Region mTouchExcludeRegion = new Region(); private final WindowManagerService mService; private final DisplayContent mDisplayContent; Loading @@ -55,8 +49,6 @@ public class TaskTapPointerEventListener implements PointerEventListener { DisplayContent displayContent) { mService = service; mDisplayContent = displayContent; DisplayInfo info = displayContent.getDisplayInfo(); mMotionSlop = (int)(info.logicalDensityDpi * TAP_MOTION_SLOP_INCHES); } // initialize the object, note this must be done outside WindowManagerService Loading @@ -74,31 +66,19 @@ public class TaskTapPointerEventListener implements PointerEventListener { final int action = motionEvent.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { mPointerId = motionEvent.getPointerId(0); mDownX = motionEvent.getX(); mDownY = motionEvent.getY(); final int x = (int) motionEvent.getX(); final int y = (int) motionEvent.getY(); final int x = (int) mDownX; final int y = (int) mDownY; synchronized (this) { if (!mTouchExcludeRegion.contains(x, y)) { mService.mH.obtainMessage(H.TAP_DOWN_OUTSIDE_TASK, x, y, mDisplayContent).sendToTarget(); mService.mH.obtainMessage(H.TAP_OUTSIDE_TASK, x, y, mDisplayContent).sendToTarget(); } } break; } case MotionEvent.ACTION_MOVE: { if (mPointerId >= 0) { int index = motionEvent.findPointerIndex(mPointerId); if ((motionEvent.getEventTime() - motionEvent.getDownTime()) > TAP_TIMEOUT_MSEC || index < 0 || Math.abs(motionEvent.getX(index) - mDownX) > mMotionSlop || Math.abs(motionEvent.getY(index) - mDownY) > mMotionSlop) { mPointerId = -1; } } if (motionEvent.getPointerCount() != 2) { stopTwoFingerScroll(); } Loading Loading @@ -149,24 +129,6 @@ public class TaskTapPointerEventListener implements PointerEventListener { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: { int index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; // Extract the index of the pointer that left the touch sensor if (mPointerId == motionEvent.getPointerId(index)) { final int x = (int)motionEvent.getX(index); final int y = (int)motionEvent.getY(index); synchronized(this) { if ((motionEvent.getEventTime() - motionEvent.getDownTime()) < TAP_TIMEOUT_MSEC && Math.abs(x - mDownX) < mMotionSlop && Math.abs(y - mDownY) < mMotionSlop && !mTouchExcludeRegion.contains(x, y)) { mService.mH.obtainMessage(H.TAP_OUTSIDE_TASK, x, y, mDisplayContent).sendToTarget(); } } mPointerId = -1; } stopTwoFingerScroll(); break; } Loading services/core/java/com/android/server/wm/WindowManagerService.java +25 −33 Original line number Diff line number Diff line Loading @@ -7163,19 +7163,26 @@ public class WindowManagerService extends IWindowManager.Stub } catch(RemoteException e) {} } private void startResizingTask(DisplayContent displayContent, int startX, int startY) { Task task = null; private void handleTapOutsideTask(DisplayContent displayContent, int x, int y) { int taskId = -1; synchronized (mWindowMap) { task = displayContent.findTaskForControlPoint(startX, startY); if (task == null || !startPositioningLocked( task.getTopVisibleAppMainWindow(), true /*resize*/, startX, startY)) { final Task task = displayContent.findTaskForControlPoint(x, y); if (task != null) { if (!startPositioningLocked( task.getTopVisibleAppMainWindow(), true /*resize*/, x, y)) { return; } taskId = task.mTaskId; } else { taskId = displayContent.taskIdFromPoint(x, y); } } if (taskId >= 0) { try { mActivityManager.setFocusedTask(task.mTaskId); mActivityManager.setFocusedTask(taskId); } catch(RemoteException e) {} } } private boolean startPositioningLocked( WindowState win, boolean resize, float startX, float startY) { Loading Loading @@ -7489,18 +7496,17 @@ public class WindowManagerService extends IWindowManager.Stub public static final int RESET_ANR_MESSAGE = 38; public static final int WALLPAPER_DRAW_PENDING_TIMEOUT = 39; public static final int TAP_DOWN_OUTSIDE_TASK = 40; public static final int FINISH_TASK_POSITIONING = 41; public static final int FINISH_TASK_POSITIONING = 40; public static final int UPDATE_DOCKED_STACK_DIVIDER = 42; public static final int UPDATE_DOCKED_STACK_DIVIDER = 41; public static final int RESIZE_STACK = 43; public static final int RESIZE_TASK = 44; public static final int RESIZE_STACK = 42; public static final int RESIZE_TASK = 43; public static final int TWO_FINGER_SCROLL_START = 45; public static final int SHOW_NON_RESIZEABLE_DOCK_TOAST = 46; public static final int TWO_FINGER_SCROLL_START = 44; public static final int SHOW_NON_RESIZEABLE_DOCK_TOAST = 45; public static final int WINDOW_REPLACEMENT_TIMEOUT = 47; public static final int WINDOW_REPLACEMENT_TIMEOUT = 46; /** * Used to denote that an integer field in a message will not be used. Loading Loading @@ -7954,27 +7960,13 @@ public class WindowManagerService extends IWindowManager.Stub } break; case TAP_OUTSIDE_TASK: { int taskId; synchronized (mWindowMap) { taskId = ((DisplayContent)msg.obj).taskIdFromPoint(msg.arg1, msg.arg2); } if (taskId >= 0) { try { mActivityManager.setFocusedTask(taskId); } catch (RemoteException e) { } } } break; case TWO_FINGER_SCROLL_START: { startScrollingTask((DisplayContent)msg.obj, msg.arg1, msg.arg2); } break; case TAP_DOWN_OUTSIDE_TASK: { startResizingTask((DisplayContent)msg.obj, msg.arg1, msg.arg2); case TAP_OUTSIDE_TASK: { handleTapOutsideTask((DisplayContent)msg.obj, msg.arg1, msg.arg2); } break; Loading Loading
services/core/java/com/android/server/wm/TaskTapPointerEventListener.java +4 −42 Original line number Diff line number Diff line Loading @@ -34,13 +34,7 @@ import static android.view.PointerIcon.STYLE_TOP_LEFT_DIAGONAL_DOUBLE_ARROW; import static android.view.PointerIcon.STYLE_TOP_RIGHT_DIAGONAL_DOUBLE_ARROW; public class TaskTapPointerEventListener implements PointerEventListener { private static final int TAP_TIMEOUT_MSEC = 300; private static final float TAP_MOTION_SLOP_INCHES = 0.125f; private final int mMotionSlop; private float mDownX; private float mDownY; private int mPointerId; final private Region mTouchExcludeRegion = new Region(); private final WindowManagerService mService; private final DisplayContent mDisplayContent; Loading @@ -55,8 +49,6 @@ public class TaskTapPointerEventListener implements PointerEventListener { DisplayContent displayContent) { mService = service; mDisplayContent = displayContent; DisplayInfo info = displayContent.getDisplayInfo(); mMotionSlop = (int)(info.logicalDensityDpi * TAP_MOTION_SLOP_INCHES); } // initialize the object, note this must be done outside WindowManagerService Loading @@ -74,31 +66,19 @@ public class TaskTapPointerEventListener implements PointerEventListener { final int action = motionEvent.getAction(); switch (action & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { mPointerId = motionEvent.getPointerId(0); mDownX = motionEvent.getX(); mDownY = motionEvent.getY(); final int x = (int) motionEvent.getX(); final int y = (int) motionEvent.getY(); final int x = (int) mDownX; final int y = (int) mDownY; synchronized (this) { if (!mTouchExcludeRegion.contains(x, y)) { mService.mH.obtainMessage(H.TAP_DOWN_OUTSIDE_TASK, x, y, mDisplayContent).sendToTarget(); mService.mH.obtainMessage(H.TAP_OUTSIDE_TASK, x, y, mDisplayContent).sendToTarget(); } } break; } case MotionEvent.ACTION_MOVE: { if (mPointerId >= 0) { int index = motionEvent.findPointerIndex(mPointerId); if ((motionEvent.getEventTime() - motionEvent.getDownTime()) > TAP_TIMEOUT_MSEC || index < 0 || Math.abs(motionEvent.getX(index) - mDownX) > mMotionSlop || Math.abs(motionEvent.getY(index) - mDownY) > mMotionSlop) { mPointerId = -1; } } if (motionEvent.getPointerCount() != 2) { stopTwoFingerScroll(); } Loading Loading @@ -149,24 +129,6 @@ public class TaskTapPointerEventListener implements PointerEventListener { case MotionEvent.ACTION_UP: case MotionEvent.ACTION_POINTER_UP: { int index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; // Extract the index of the pointer that left the touch sensor if (mPointerId == motionEvent.getPointerId(index)) { final int x = (int)motionEvent.getX(index); final int y = (int)motionEvent.getY(index); synchronized(this) { if ((motionEvent.getEventTime() - motionEvent.getDownTime()) < TAP_TIMEOUT_MSEC && Math.abs(x - mDownX) < mMotionSlop && Math.abs(y - mDownY) < mMotionSlop && !mTouchExcludeRegion.contains(x, y)) { mService.mH.obtainMessage(H.TAP_OUTSIDE_TASK, x, y, mDisplayContent).sendToTarget(); } } mPointerId = -1; } stopTwoFingerScroll(); break; } Loading
services/core/java/com/android/server/wm/WindowManagerService.java +25 −33 Original line number Diff line number Diff line Loading @@ -7163,19 +7163,26 @@ public class WindowManagerService extends IWindowManager.Stub } catch(RemoteException e) {} } private void startResizingTask(DisplayContent displayContent, int startX, int startY) { Task task = null; private void handleTapOutsideTask(DisplayContent displayContent, int x, int y) { int taskId = -1; synchronized (mWindowMap) { task = displayContent.findTaskForControlPoint(startX, startY); if (task == null || !startPositioningLocked( task.getTopVisibleAppMainWindow(), true /*resize*/, startX, startY)) { final Task task = displayContent.findTaskForControlPoint(x, y); if (task != null) { if (!startPositioningLocked( task.getTopVisibleAppMainWindow(), true /*resize*/, x, y)) { return; } taskId = task.mTaskId; } else { taskId = displayContent.taskIdFromPoint(x, y); } } if (taskId >= 0) { try { mActivityManager.setFocusedTask(task.mTaskId); mActivityManager.setFocusedTask(taskId); } catch(RemoteException e) {} } } private boolean startPositioningLocked( WindowState win, boolean resize, float startX, float startY) { Loading Loading @@ -7489,18 +7496,17 @@ public class WindowManagerService extends IWindowManager.Stub public static final int RESET_ANR_MESSAGE = 38; public static final int WALLPAPER_DRAW_PENDING_TIMEOUT = 39; public static final int TAP_DOWN_OUTSIDE_TASK = 40; public static final int FINISH_TASK_POSITIONING = 41; public static final int FINISH_TASK_POSITIONING = 40; public static final int UPDATE_DOCKED_STACK_DIVIDER = 42; public static final int UPDATE_DOCKED_STACK_DIVIDER = 41; public static final int RESIZE_STACK = 43; public static final int RESIZE_TASK = 44; public static final int RESIZE_STACK = 42; public static final int RESIZE_TASK = 43; public static final int TWO_FINGER_SCROLL_START = 45; public static final int SHOW_NON_RESIZEABLE_DOCK_TOAST = 46; public static final int TWO_FINGER_SCROLL_START = 44; public static final int SHOW_NON_RESIZEABLE_DOCK_TOAST = 45; public static final int WINDOW_REPLACEMENT_TIMEOUT = 47; public static final int WINDOW_REPLACEMENT_TIMEOUT = 46; /** * Used to denote that an integer field in a message will not be used. Loading Loading @@ -7954,27 +7960,13 @@ public class WindowManagerService extends IWindowManager.Stub } break; case TAP_OUTSIDE_TASK: { int taskId; synchronized (mWindowMap) { taskId = ((DisplayContent)msg.obj).taskIdFromPoint(msg.arg1, msg.arg2); } if (taskId >= 0) { try { mActivityManager.setFocusedTask(taskId); } catch (RemoteException e) { } } } break; case TWO_FINGER_SCROLL_START: { startScrollingTask((DisplayContent)msg.obj, msg.arg1, msg.arg2); } break; case TAP_DOWN_OUTSIDE_TASK: { startResizingTask((DisplayContent)msg.obj, msg.arg1, msg.arg2); case TAP_OUTSIDE_TASK: { handleTapOutsideTask((DisplayContent)msg.obj, msg.arg1, msg.arg2); } break; Loading