diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-07-08 08:02:33 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-07-08 08:02:33 +0000 |
commit | 36151597fb13979eb4f435e86fd7949642b80e54 (patch) | |
tree | aee0a445f8d7fb949458b7e2a1c56d805412cde7 | |
parent | b37de73103e2b155dbd77909587d65cf390f0d6e (diff) | |
parent | 2351d5f48f10d26cd6aabb163b0b19a0b406e089 (diff) | |
download | base-36151597fb13979eb4f435e86fd7949642b80e54.tar.gz |
Merge "GestureExclusion: Fix restriction priority" into qt-dev
-rw-r--r-- | services/core/java/com/android/server/wm/DisplayContent.java | 6 | ||||
-rw-r--r-- | services/core/java/com/android/server/wm/utils/RegionUtils.java | 13 |
2 files changed, 14 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 675483442300..b837d9ec874b 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -140,7 +140,7 @@ import static com.android.server.wm.WindowManagerService.logSurface; import static com.android.server.wm.WindowState.RESIZE_HANDLE_WIDTH_IN_DP; import static com.android.server.wm.WindowStateAnimator.DRAW_PENDING; import static com.android.server.wm.WindowStateAnimator.READY_TO_SHOW; -import static com.android.server.wm.utils.RegionUtils.forEachRect; +import static com.android.server.wm.utils.RegionUtils.forEachRectReverse; import static com.android.server.wm.utils.RegionUtils.rectListToRegion; import android.animation.AnimationHandler; @@ -5227,13 +5227,13 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo r.op(edge, Op.INTERSECT); final int[] remaining = {limit}; - forEachRect(r, rect -> { + forEachRectReverse(r, rect -> { if (remaining[0] <= 0) { return; } final int height = rect.height(); if (height > remaining[0]) { - rect.bottom = rect.top + remaining[0]; + rect.top = rect.bottom - remaining[0]; } remaining[0] -= height; global.op(rect, Op.UNION); diff --git a/services/core/java/com/android/server/wm/utils/RegionUtils.java b/services/core/java/com/android/server/wm/utils/RegionUtils.java index 8cd6f8826083..b1b30701df4f 100644 --- a/services/core/java/com/android/server/wm/utils/RegionUtils.java +++ b/services/core/java/com/android/server/wm/utils/RegionUtils.java @@ -20,6 +20,8 @@ import android.graphics.Rect; import android.graphics.Region; import android.graphics.RegionIterator; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.function.Consumer; @@ -48,14 +50,21 @@ public class RegionUtils { /** * Applies actions on each rect contained within a {@code Region}. * + * Order is bottom to top, then right to left. + * * @param region the given region. * @param rectConsumer the action holder. */ - public static void forEachRect(Region region, Consumer<Rect> rectConsumer) { + public static void forEachRectReverse(Region region, Consumer<Rect> rectConsumer) { final RegionIterator it = new RegionIterator(region); + final ArrayList<Rect> rects = new ArrayList<>(); final Rect rect = new Rect(); while (it.next(rect)) { - rectConsumer.accept(rect); + rects.add(new Rect(rect)); } + // TODO: instead of creating an array and reversing it, expose the reverse iterator through + // JNI. + Collections.reverse(rects); + rects.forEach(rectConsumer); } } |