Merge "PIP: Add mouse hover/exit menu show support." into rvc-dev am: 2dfaaebfe9
Change-Id: I9cf59c013823a30107be10d5ca84550ca0ddd058
This commit is contained in:
@@ -413,6 +413,8 @@ public class PipTouchHandler {
|
||||
break;
|
||||
}
|
||||
case MotionEvent.ACTION_HOVER_ENTER:
|
||||
mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
|
||||
mMovementBounds, false /* allowMenuTimeout */, false /* willResizeMenu */);
|
||||
case MotionEvent.ACTION_HOVER_MOVE: {
|
||||
if (!shouldDeliverToMenu && !mSendingHoverAccessibilityEvents) {
|
||||
sendAccessibilityHoverEvent(AccessibilityEvent.TYPE_VIEW_HOVER_ENTER);
|
||||
@@ -421,6 +423,7 @@ public class PipTouchHandler {
|
||||
break;
|
||||
}
|
||||
case MotionEvent.ACTION_HOVER_EXIT: {
|
||||
mMenuController.hideMenu();
|
||||
if (!shouldDeliverToMenu && mSendingHoverAccessibilityEvents) {
|
||||
sendAccessibilityHoverEvent(AccessibilityEvent.TYPE_VIEW_HOVER_EXIT);
|
||||
mSendingHoverAccessibilityEvents = false;
|
||||
@@ -538,9 +541,6 @@ public class PipTouchHandler {
|
||||
mSavedSnapFraction = -1f;
|
||||
}
|
||||
} else {
|
||||
// If resizing is not allowed, then the PiP should be frozen until the transition
|
||||
// ends as well
|
||||
setTouchEnabled(false);
|
||||
mSavedSnapFraction = -1f;
|
||||
}
|
||||
}
|
||||
@@ -714,6 +714,8 @@ public class PipTouchHandler {
|
||||
}
|
||||
} else if (mTouchState.isDoubleTap()) {
|
||||
// Expand to fullscreen if this is a double tap
|
||||
// the PiP should be frozen until the transition ends
|
||||
setTouchEnabled(false);
|
||||
mMotionHelper.expandPip();
|
||||
} else if (mMenuState != MENU_STATE_FULL) {
|
||||
if (!mTouchState.isWaitingForDoubleTap()) {
|
||||
|
||||
@@ -149,6 +149,10 @@ class InputConsumerImpl implements IBinder.DeathRecipient {
|
||||
t.setLayer(mInputSurface, layer);
|
||||
}
|
||||
|
||||
void reparent(SurfaceControl.Transaction t, WindowContainer wc) {
|
||||
t.reparent(mInputSurface, wc.getSurfaceControl());
|
||||
}
|
||||
|
||||
void disposeChannelsLw() {
|
||||
mService.mInputManager.unregisterInputChannel(mServerChannel);
|
||||
mClientChannel.dispose();
|
||||
|
||||
@@ -511,14 +511,13 @@ final class InputMonitor {
|
||||
|
||||
if (w.inPinnedWindowingMode()) {
|
||||
if (mAddPipInputConsumerHandle) {
|
||||
// Update the bounds of the Pip input consumer to match the window bounds.
|
||||
w.getBounds(mTmpRect);
|
||||
mPipInputConsumer.layout(mInputTransaction, mTmpRect);
|
||||
|
||||
// The touchable region is relative to the surface top-left
|
||||
mTmpRect.offsetTo(0, 0);
|
||||
mPipInputConsumer.mWindowHandle.touchableRegion.set(mTmpRect);
|
||||
mPipInputConsumer.show(mInputTransaction, w);
|
||||
final Task rootTask = w.getTask().getRootTask();
|
||||
mPipInputConsumer.mWindowHandle.replaceTouchableRegionWithCrop(
|
||||
rootTask.getSurfaceControl());
|
||||
// We set the layer to z=MAX-1 so that it's always on top.
|
||||
mPipInputConsumer.reparent(mInputTransaction, rootTask);
|
||||
mPipInputConsumer.show(mInputTransaction, Integer.MAX_VALUE - 1);
|
||||
mAddPipInputConsumerHandle = false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user