Merge "Revert "Fix drag and drop (2/3)"" into qt-qpr1-dev

This commit is contained in:
TreeHugger Robot
2019-12-19 07:49:32 +00:00
committed by Android (Google) Code Review
3 changed files with 10 additions and 12 deletions

View File

@@ -129,7 +129,6 @@ class DragState {
* {@code true} when {@link #closeLocked()} is called.
*/
private boolean mIsClosing;
IBinder mTransferTouchFromToken;
DragState(WindowManagerService service, DragDropController controller, IBinder token,
SurfaceControl surface, int flags, IBinder localWin) {
@@ -173,10 +172,9 @@ class DragState {
mTmpClipRect.set(0, 0, mDisplaySize.x, mDisplaySize.y);
mTransaction.setWindowCrop(mInputSurface, mTmpClipRect);
mTransaction.transferTouchFocus(mTransferTouchFromToken, h.token);
mTransferTouchFromToken = null;
// syncInputWindows here to ensure the input channel isn't removed before the transfer.
// syncInputWindows here to ensure the input window info is sent before the
// transferTouchFocus is called.
mTransaction.syncInputWindows();
mTransaction.apply();
}

View File

@@ -24,7 +24,6 @@ import android.app.IActivityTaskManager;
import android.graphics.Point;
import android.graphics.Rect;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteException;
import android.util.Slog;
@@ -51,7 +50,6 @@ class TaskPositioningController {
private @Nullable TaskPositioner mTaskPositioner;
private final Rect mTmpClipRect = new Rect();
private IBinder mTransferTouchFromToken;
boolean isPositioningLocked() {
return mTaskPositioner != null;
@@ -104,8 +102,6 @@ class TaskPositioningController {
mTmpClipRect.set(0, 0, p.x, p.y);
t.setWindowCrop(mInputSurface, mTmpClipRect);
t.transferTouchFocus(mTransferTouchFromToken, h.token);
mTransferTouchFromToken = null;
}
boolean startMovingTask(IWindow window, float startX, float startY) {
@@ -168,6 +164,7 @@ class TaskPositioningController {
mPositioningDisplay = displayContent;
mTaskPositioner = TaskPositioner.create(mService);
mTaskPositioner.register(displayContent);
// We need to grab the touch focus so that the touch events during the
// resizing/scrolling are not sent to the app. 'win' is the main window
@@ -178,8 +175,12 @@ class TaskPositioningController {
&& displayContent.mCurrentFocus.mAppToken == win.mAppToken) {
transferFocusFromWin = displayContent.mCurrentFocus;
}
mTransferTouchFromToken = transferFocusFromWin.mInputChannel.getToken();
mTaskPositioner.register(displayContent);
if (!mInputManager.transferTouchFocus(
transferFocusFromWin.mInputChannel, mTaskPositioner.mServerChannel)) {
Slog.e(TAG_WM, "startPositioningLocked: Unable to transfer touch focus");
cleanUpTaskPositioner();
return false;
}
mTaskPositioner.startDrag(win, resize, preserveOrientation, startX, startY);
return true;

View File

@@ -156,9 +156,8 @@ public abstract class WindowManagerInternal {
default boolean registerInputChannel(
DragState state, Display display, InputManagerService service,
InputChannel source) {
state.mTransferTouchFromToken = source.getToken();
state.register(display);
return true;
return service.transferTouchFocus(source, state.getInputChannel());
}
/**