summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorim Jaggi <jjaggi@google.com>2016-02-09 01:56:23 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2016-02-09 01:56:23 +0000
commit93f04f89202d269fbb38c6f2ffacc3fa01728bbc (patch)
treee4eda10b0156915842568fbe80790a0f91a4823d
parentc5c898640fd79562a3f278dbe825b39b0b65c7f7 (diff)
parent81ba11eccbc2519338782100c13cf4a5909ad6be (diff)
Merge "Put dismiss end target at navigation bar" into nyc-dev
-rw-r--r--core/java/android/view/WindowManagerPolicy.java5
-rw-r--r--core/java/com/android/internal/policy/DividerSnapAlgorithm.java6
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java24
-rw-r--r--services/core/java/com/android/server/wm/DockedStackDividerController.java4
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java5
5 files changed, 36 insertions, 8 deletions
diff --git a/core/java/android/view/WindowManagerPolicy.java b/core/java/android/view/WindowManagerPolicy.java
index 6e38b3268683..947906bf4403 100644
--- a/core/java/android/view/WindowManagerPolicy.java
+++ b/core/java/android/view/WindowManagerPolicy.java
@@ -460,6 +460,11 @@ public interface WindowManagerPolicy {
/** Unregister a system listener for touch events */
void unregisterPointerEventListener(PointerEventListener listener);
+
+ /**
+ * @return The content insets of the docked divider window.
+ */
+ int getDockedDividerInsetsLw();
}
public interface PointerEventListener {
diff --git a/core/java/com/android/internal/policy/DividerSnapAlgorithm.java b/core/java/com/android/internal/policy/DividerSnapAlgorithm.java
index 597c5225f89f..84d0fc70b1ca 100644
--- a/core/java/com/android/internal/policy/DividerSnapAlgorithm.java
+++ b/core/java/com/android/internal/policy/DividerSnapAlgorithm.java
@@ -136,8 +136,7 @@ public class DividerSnapAlgorithm {
/ (mFirstSplitTarget.position - getStartInset());
} else if (position > mLastSplitTarget.position) {
return (float) (position - mLastSplitTarget.position)
- / (mDismissEndTarget.position - getEndInset()
- - mLastSplitTarget.position - mDividerSize);
+ / (mDismissEndTarget.position - mLastSplitTarget.position - mDividerSize);
}
return 0f;
}
@@ -222,7 +221,8 @@ public class DividerSnapAlgorithm {
addMiddleTarget(isHorizontalDivision);
break;
}
- mTargets.add(new SnapTarget(dividerMax, SnapTarget.FLAG_DISMISS_END, 0.35f));
+ int navBarSize = isHorizontalDivision ? mInsets.bottom : mInsets.right;
+ mTargets.add(new SnapTarget(dividerMax - navBarSize, SnapTarget.FLAG_DISMISS_END, 0.35f));
}
private void addFixedDivisionTargets(boolean isHorizontalDivision) {
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index a92cc31659e6..c046ba610b3a 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2645,11 +2645,7 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
}
} else if (win.getAttrs().type == TYPE_DOCK_DIVIDER) {
- if (transit == TRANSIT_ENTER || transit == TRANSIT_SHOW) {
- return R.anim.fade_in;
- } else if (transit == TRANSIT_EXIT) {
- return R.anim.fade_out;
- }
+ return selectDockedDividerAnimationLw(win, transit);
}
if (transit == TRANSIT_PREVIEW_DONE) {
@@ -2669,6 +2665,24 @@ public class PhoneWindowManager implements WindowManagerPolicy {
return 0;
}
+ private int selectDockedDividerAnimationLw(WindowState win, int transit) {
+ int insets = mWindowManagerFuncs.getDockedDividerInsetsLw();
+
+ // If the divider is behind the navigation bar, don't animate.
+ if (mNavigationBar != null
+ && (win.getFrameLw().top + insets >= mNavigationBar.getFrameLw().top
+ || win.getFrameLw().left + insets >= mNavigationBar.getFrameLw().left)) {
+ return 0;
+ }
+ if (transit == TRANSIT_ENTER || transit == TRANSIT_SHOW) {
+ return R.anim.fade_in;
+ } else if (transit == TRANSIT_EXIT) {
+ return R.anim.fade_out;
+ } else {
+ return 0;
+ }
+ }
+
@Override
public void selectRotationAnimationLw(int anim[]) {
if (PRINT_ANIM) Slog.i(TAG, "selectRotationAnimation mTopFullscreen="
diff --git a/services/core/java/com/android/server/wm/DockedStackDividerController.java b/services/core/java/com/android/server/wm/DockedStackDividerController.java
index 72953183a173..412a45500157 100644
--- a/services/core/java/com/android/server/wm/DockedStackDividerController.java
+++ b/services/core/java/com/android/server/wm/DockedStackDividerController.java
@@ -72,6 +72,10 @@ public class DockedStackDividerController implements DimLayerUser {
return mDividerWindowWidth - 2 * mDividerInsets;
}
+ int getContentInsets() {
+ return mDividerInsets;
+ }
+
void setResizing(boolean resizing) {
mResizing = resizing;
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 1b041cb751f1..d1ffaa07ed13 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -9619,6 +9619,11 @@ public class WindowManagerService extends IWindowManager.Stub
&& !appWindow.mTask.inFreeformWorkspace();
}
+ @Override
+ public int getDockedDividerInsetsLw() {
+ return getDefaultDisplayContentLocked().getDockedDividerController().getContentInsets();
+ }
+
void dumpPolicyLocked(PrintWriter pw, String[] args, boolean dumpAll) {
pw.println("WINDOW MANAGER POLICY STATE (dumpsys window policy)");
mPolicy.dump(" ", pw, args);