From ad0f7793c7574cb563f8001497a2af425ceee1b7 Mon Sep 17 00:00:00 2001 From: Kazuhiro Inaba Date: Thu, 14 Jul 2016 13:02:55 +0900 Subject: [PATCH] Cap minimum visibilty of floating windows by the real size. Without the cap, say, a 40dp window cannot snap to the left edge, and one CTS is failing due to this in freeform mode. BUG=30037893 TEST=run cts --class android.widget.cts.PopupWindowTest \ --method testUpdateDimensionAndAlignAnchorViewWithOffsets Change-Id: I474ca4ce519bba39d3e16ec8620b1176a3c52834 (cherry picked from commit 63e24d1791b2277847d4925dc5d12857c79ac52a) --- services/core/java/com/android/server/wm/WindowState.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 155d8d05b1ffa..70bca1d42e7ad 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -829,10 +829,10 @@ final class WindowState implements WindowManagerPolicy.WindowState { final int height = Math.min(mFrame.height(), mContentFrame.height()); final int width = Math.min(mContentFrame.width(), mFrame.width()); final DisplayMetrics displayMetrics = getDisplayContent().getDisplayMetrics(); - final int minVisibleHeight = WindowManagerService.dipToPixel( - MINIMUM_VISIBLE_HEIGHT_IN_DP, displayMetrics); - final int minVisibleWidth = WindowManagerService.dipToPixel( - MINIMUM_VISIBLE_WIDTH_IN_DP, displayMetrics); + final int minVisibleHeight = Math.min(height, WindowManagerService.dipToPixel( + MINIMUM_VISIBLE_HEIGHT_IN_DP, displayMetrics)); + final int minVisibleWidth = Math.min(width, WindowManagerService.dipToPixel( + MINIMUM_VISIBLE_WIDTH_IN_DP, displayMetrics)); final int top = Math.max(mContentFrame.top, Math.min(mFrame.top, mContentFrame.bottom - minVisibleHeight)); final int left = Math.max(mContentFrame.left + minVisibleWidth - width,