am 4181e8a4: Merge "Fixing issue where you can reorder/delete a non-widget page. (Bug 7493984)" into jb-mr1-lockscreen-dev
* commit '4181e8a4ac07e118724f7935928d2c3a1bb291f7':
Fixing issue where you can reorder/delete a non-widget page. (Bug 7493984)
diff --git a/core/res/res/layout-land/keyguard_host_view.xml b/core/res/res/layout-land/keyguard_host_view.xml
index 2f67606..6b36235 100644
--- a/core/res/res/layout-land/keyguard_host_view.xml
+++ b/core/res/res/layout-land/keyguard_host_view.xml
@@ -37,7 +37,8 @@
android:id="@+id/keyguard_widget_pager_delete_target"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="top|center_horizontal" />
+ android:layout_gravity="top|center_horizontal"
+ androidprv:layout_childType="pageDeleteDropTarget" />
<include layout="@layout/keyguard_widget_pager"
android:id="@+id/app_widget_container"
diff --git a/core/res/res/layout-port/keyguard_host_view.xml b/core/res/res/layout-port/keyguard_host_view.xml
index 73f07d5..fb25f9c 100644
--- a/core/res/res/layout-port/keyguard_host_view.xml
+++ b/core/res/res/layout-port/keyguard_host_view.xml
@@ -35,7 +35,8 @@
<FrameLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content">
+ android:layout_height="wrap_content"
+ androidprv:layout_childType="pageDeleteDropTarget">
<include layout="@layout/keyguard_widget_remove_drop_target"
android:id="@+id/keyguard_widget_pager_delete_target"
android:layout_width="wrap_content"
diff --git a/core/res/res/layout-sw600dp-port/keyguard_host_view.xml b/core/res/res/layout-sw600dp-port/keyguard_host_view.xml
index a23771b..e3d577d 100644
--- a/core/res/res/layout-sw600dp-port/keyguard_host_view.xml
+++ b/core/res/res/layout-sw600dp-port/keyguard_host_view.xml
@@ -38,7 +38,8 @@
android:id="@+id/keyguard_widget_pager_delete_target"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="top|center_horizontal" />
+ android:layout_gravity="top|center_horizontal"
+ androidprv:layout_childType="pageDeleteDropTarget" />
<include layout="@layout/keyguard_widget_pager"
android:id="@+id/app_widget_container"
diff --git a/core/res/res/layout/keyguard_widget_remove_drop_target.xml b/core/res/res/layout/keyguard_widget_remove_drop_target.xml
index f9f40ab..294c386 100644
--- a/core/res/res/layout/keyguard_widget_remove_drop_target.xml
+++ b/core/res/res/layout/keyguard_widget_remove_drop_target.xml
@@ -19,9 +19,9 @@
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:gravity="center"
- android:padding="20dp"
- android:paddingLeft="40dp"
- android:paddingRight="40dp"
+ android:padding="30dp"
+ android:paddingLeft="60dp"
+ android:paddingRight="60dp"
android:drawableLeft="@drawable/kg_widget_delete_drop_target"
android:drawablePadding="4dp"
android:text="@string/kg_reordering_delete_drop_target_text"
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index f1757f7..447daab 100755
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -5820,6 +5820,8 @@
<!-- This is a handle that is used for expanding the
security challenge container when it is collapsed. -->
<enum name="expandChallengeHandle" value="6" />
+ <!-- Delete drop target. This will be the drop target to delete pages. -->
+ <enum name="pageDeleteDropTarget" value="7" />
</attr>
<declare-styleable name="SlidingChallengeLayout_Layout">
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java
index 083d47e..685e8ee 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java
@@ -511,14 +511,17 @@
return false;
}
+ /**
+ * Returns the bounded set of pages that are re-orderable. The range is fully inclusive.
+ */
@Override
void boundByReorderablePages(boolean isReordering, int[] range) {
if (isReordering) {
// Remove non-widget pages from the range
- while (range[1] > range[0] && !isWidgetPage(range[1])) {
+ while (range[1] >= range[0] && !isWidgetPage(range[1])) {
range[1]--;
}
- while (range[0] < range[1] && !isWidgetPage(range[0])) {
+ while (range[0] <= range[1] && !isWidgetPage(range[0])) {
range[0]++;
}
}
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java b/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java
index f4940a2..941f2f0 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/MultiPaneChallengeLayout.java
@@ -48,6 +48,7 @@
private OnBouncerStateChangedListener mBouncerListener;
private final Rect mTempRect = new Rect();
+ private final Rect mZeroPadding = new Rect();
private final DisplayMetrics mDisplayMetrics;
@@ -187,6 +188,8 @@
// on the window. We want to avoid resizing widgets when possible as it can
// be ugly/expensive. This lets us simply clip them instead.
return virtualHeight - heightUsed;
+ } else if (lp.childType == LayoutParams.CHILD_TYPE_PAGE_DELETE_DROP_TARGET) {
+ return height;
}
return Math.min(virtualHeight - heightUsed, height);
}
@@ -330,6 +333,7 @@
final int count = getChildCount();
for (int i = 0; i < count; i++) {
final View child = getChildAt(i);
+ LayoutParams lp = (LayoutParams) child.getLayoutParams();
// We did the user switcher above if we have one.
if (child == mUserSwitcherView || child.getVisibility() == GONE) continue;
@@ -337,6 +341,9 @@
if (child == mScrimView) {
child.layout(0, 0, width, height);
continue;
+ } else if (lp.childType == LayoutParams.CHILD_TYPE_PAGE_DELETE_DROP_TARGET) {
+ layoutWithGravity(width, height, child, mZeroPadding, false);
+ continue;
}
layoutWithGravity(width, height, child, padding, false);
@@ -467,6 +474,7 @@
public static final int CHILD_TYPE_CHALLENGE = 2;
public static final int CHILD_TYPE_USER_SWITCHER = 3;
public static final int CHILD_TYPE_SCRIM = 4;
+ public static final int CHILD_TYPE_PAGE_DELETE_DROP_TARGET = 7;
public int gravity = Gravity.NO_GRAVITY;
diff --git a/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java b/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java
index e991d16..3900ab4 100644
--- a/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java
+++ b/policy/src/com/android/internal/policy/impl/keyguard/PagedView.java
@@ -233,6 +233,7 @@
private Matrix mTmpInvMatrix = new Matrix();
private float[] mTmpPoint = new float[2];
private Rect mTmpRect = new Rect();
+ private Rect mAltTmpRect = new Rect();
// Fling to delete
private int FLING_TO_DELETE_FADE_OUT_DURATION = 350;
@@ -2451,7 +2452,13 @@
/* Drag to delete */
private boolean isHoveringOverDeleteDropTarget(int x, int y) {
if (mDeleteDropTarget != null) {
+ mAltTmpRect.set(0, 0, 0, 0);
+ View parent = (View) mDeleteDropTarget.getParent();
+ if (parent != null) {
+ parent.getGlobalVisibleRect(mAltTmpRect);
+ }
mDeleteDropTarget.getGlobalVisibleRect(mTmpRect);
+ mTmpRect.offset(-mAltTmpRect.left, -mAltTmpRect.top);
return mTmpRect.contains(x, y);
}
return false;