From 6223fba87efabfca2342fd75594e39d913023aa2 Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Tue, 18 Jan 2011 18:00:30 -0800 Subject: [PATCH 1/2] Remove optimization to isInContentArea that wasn't working. This might fix the bug where tapping outside the notification panel doesn't close it. I'm not 100% sure because I can't reproduce this on-demand, but I think it's possible for onSizeChanged to race with the animations and we end up with a bad rectangle. The time I did see it happen was tapping above the title area right after canceling a notification, so that could explain it I think. Bug: 3339023 Change-Id: Ic3a7f4c059e7bf6f30b864a371a0912a6414edb7 --- .../statusbar/tablet/NotificationPanel.java | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java index 45a22b61904d3..800f4b4a11b89 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/tablet/NotificationPanel.java @@ -52,7 +52,7 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel, View mNotificationScroller; View mNotificationGlow; ViewGroup mContentFrame; - Rect mContentArea; + Rect mContentArea = new Rect(); View mSettingsView; View mScrim, mGlow; ViewGroup mContentParent; @@ -136,7 +136,6 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel, @Override public void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); - mContentArea = null; } public void onClick(View v) { @@ -165,13 +164,11 @@ public class NotificationPanel extends RelativeLayout implements StatusBarPanel, } public boolean isInContentArea(int x, int y) { - if (mContentArea == null) { - mContentArea = new Rect(mContentFrame.getLeft(), - mTitleArea.getTop(), - mContentFrame.getRight(), - mContentFrame.getBottom()); - offsetDescendantRectToMyCoords(mContentParent, mContentArea); - } + mContentArea.left = mContentFrame.getLeft(); + mContentArea.top = mTitleArea.getTop(); + mContentArea.right = mContentFrame.getRight(); + mContentArea.bottom = mContentFrame.getBottom(); + offsetDescendantRectToMyCoords(mContentParent, mContentArea); return mContentArea.contains(x, y); } From 120856c50a56595c0954ae1bf6f05888386937b9 Mon Sep 17 00:00:00 2001 From: Joe Onorato Date: Wed, 19 Jan 2011 14:52:08 -0800 Subject: [PATCH 2/2] Pass SkRegion::toString() through to java. Change-Id: I3814b491c689313c1f8da811a104d913175f6268 --- core/jni/android/graphics/Region.cpp | 11 +++++++++++ graphics/java/android/graphics/Region.java | 8 +++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/core/jni/android/graphics/Region.cpp b/core/jni/android/graphics/Region.cpp index c43b5ce14eb17..24452292ab62a 100644 --- a/core/jni/android/graphics/Region.cpp +++ b/core/jni/android/graphics/Region.cpp @@ -154,6 +154,16 @@ static void Region_scale(JNIEnv* env, jobject region, jfloat scale, jobject dst) scale_rgn(rgn, *rgn, scale); } +static jstring Region_toString(JNIEnv* env, jobject clazz, SkRegion* region) { + char* str = region->toString(); + if (str == NULL) { + return NULL; + } + jstring result = env->NewStringUTF(str); + free(str); + return result; +} + //////////////////////////////////////////////////////////////////////////////////////////////////////////// static SkRegion* Region_createFromParcel(JNIEnv* env, jobject clazz, jobject parcel) @@ -262,6 +272,7 @@ static JNINativeMethod gRegionMethods[] = { { "quickReject", "(Landroid/graphics/Region;)Z", (void*)Region_quickRejectRgn }, { "scale", "(FLandroid/graphics/Region;)V", (void*)Region_scale }, { "translate", "(IILandroid/graphics/Region;)V", (void*)Region_translate }, + { "nativeToString", "(I)Ljava/lang/String;", (void*)Region_toString }, // parceling methods { "nativeCreateFromParcel", "(Landroid/os/Parcel;)I", (void*)Region_createFromParcel }, { "nativeWriteToParcel", "(ILandroid/os/Parcel;)Z", (void*)Region_writeToParcel }, diff --git a/graphics/java/android/graphics/Region.java b/graphics/java/android/graphics/Region.java index e5408068e64ff..27ea0f03d97ab 100644 --- a/graphics/java/android/graphics/Region.java +++ b/graphics/java/android/graphics/Region.java @@ -287,6 +287,10 @@ public class Region implements Parcelable { region2.mNativeRegion, op.nativeInt); } + public String toString() { + return nativeToString(mNativeRegion); + } + ////////////////////////////////////////////////////////////////////////// public static final Parcelable.Creator CREATOR @@ -357,6 +361,8 @@ public class Region implements Parcelable { return mNativeRegion; } + private static native boolean nativeEquals(int native_r1, int native_r2); + private static native int nativeConstructor(); private static native void nativeDestructor(int native_region); @@ -381,5 +387,5 @@ public class Region implements Parcelable { private static native boolean nativeWriteToParcel(int native_region, Parcel p); - private static native boolean nativeEquals(int native_r1, int native_r2); + private static native String nativeToString(int native_region); }