diff options
Diffstat (limited to 'services/java/com/android/server/wm/WindowState.java')
-rw-r--r-- | services/java/com/android/server/wm/WindowState.java | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java index cdd0047..a384b03 100644 --- a/services/java/com/android/server/wm/WindowState.java +++ b/services/java/com/android/server/wm/WindowState.java @@ -1236,7 +1236,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { * Input Manager uses when discarding windows from input consideration. */ boolean isPotentialDragTarget() { - return isVisibleNow() && (mInputChannel != null) && !mRemoved; + return isVisibleNow() && !mRemoved + && mInputChannel != null && mInputWindowHandle != null; } /** @@ -1372,7 +1373,16 @@ final class WindowState implements WindowManagerPolicy.WindowState { // we are doing this as part of processing a death note.) } } - + + void setInputChannel(InputChannel inputChannel) { + if (mInputChannel != null) { + throw new IllegalStateException("Window already has an input channel."); + } + + mInputChannel = inputChannel; + mInputWindowHandle.inputChannel = inputChannel; + } + void disposeInputChannel() { if (mInputChannel != null) { mService.mInputManager.unregisterInputChannel(mInputChannel); @@ -1380,6 +1390,8 @@ final class WindowState implements WindowManagerPolicy.WindowState { mInputChannel.dispose(); mInputChannel = null; } + + mInputWindowHandle.inputChannel = null; } private class DeathRecipient implements IBinder.DeathRecipient { |