OSDN Git Service

Merge "No input for windows in minimized docked stack" into nyc-dev
authorJorim Jaggi <jjaggi@google.com>
Wed, 13 Apr 2016 02:31:47 +0000 (02:31 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Wed, 13 Apr 2016 02:31:49 +0000 (02:31 +0000)
services/core/java/com/android/server/wm/DisplayContent.java
services/core/java/com/android/server/wm/InputMonitor.java
services/core/java/com/android/server/wm/WindowState.java

index 28379f4..1f16481 100644 (file)
@@ -290,7 +290,7 @@ class DisplayContent {
         for (int stackNdx = mStacks.size() - 1; stackNdx >= 0; --stackNdx) {
             TaskStack stack = mStacks.get(stackNdx);
             stack.getBounds(mTmpRect);
-            if (!mTmpRect.contains(x, y)) {
+            if (!mTmpRect.contains(x, y) || stack.isAdjustedForMinimizedDockedStack()) {
                 continue;
             }
             final ArrayList<Task> tasks = stack.getTasks();
index eea0e73..be9fb26 100644 (file)
@@ -294,7 +294,8 @@ final class InputMonitor implements InputManagerService.WindowManagerCallbacks {
                 final WindowState child = windows.get(winNdx);
                 final InputChannel inputChannel = child.mInputChannel;
                 final InputWindowHandle inputWindowHandle = child.mInputWindowHandle;
-                if (inputChannel == null || inputWindowHandle == null || child.mRemoved) {
+                if (inputChannel == null || inputWindowHandle == null || child.mRemoved
+                        || child.isAdjustedForMinimizedDock()) {
                     // Skip this window because it cannot possibly receive input.
                     continue;
                 }
index c991130..f4d1579 100644 (file)
@@ -1390,6 +1390,11 @@ final class WindowState implements WindowManagerPolicy.WindowState {
         return configChanged;
     }
 
+    boolean isAdjustedForMinimizedDock() {
+        return mAppToken != null && mAppToken.mTask != null
+                && mAppToken.mTask.mStack.isAdjustedForMinimizedDock();
+    }
+
     void removeLocked() {
         disposeInputChannel();
 
@@ -1776,7 +1781,8 @@ final class WindowState implements WindowManagerPolicy.WindowState {
         return isVisibleOrAdding()
                 && (mViewVisibility == View.VISIBLE)
                 && ((mAttrs.flags & WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE) == 0)
-                && (mAppToken == null || mAppToken.windowsAreFocusable());
+                && (mAppToken == null || mAppToken.windowsAreFocusable())
+                && !isAdjustedForMinimizedDock();
     }
 
     @Override