summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2012-06-28 16:07:22 -0700
committerDianne Hackborn <hackbod@google.com>2012-06-28 16:34:35 -0700
commita19402165000e9513f3097e10df2b7ebc8dbe1d4 (patch)
treee8fd51a31d7ab8a9612aa8ebd7cec98b257996fd
parentc9d24b27079258728ee08ad7d6b79abfda2df494 (diff)
downloadframeworks_base-a19402165000e9513f3097e10df2b7ebc8dbe1d4.zip
frameworks_base-a19402165000e9513f3097e10df2b7ebc8dbe1d4.tar.gz
frameworks_base-a19402165000e9513f3097e10df2b7ebc8dbe1d4.tar.bz2
Maybe fix issue #6756472: Share button is not defocusing the shade
I got this reproduce a few times, then wasn't able to. I made this change and then couldn't reproduce it. Maybe it fixed it. The change here is to explicitly pass in the handler class to apply() and reapply(), instead of relying it being set as a member of the RemoteViews class. This is much cleaner and more explicitly about setting that for the click callbacks. Bug: 6756472 Change-Id: I8d029c3836501df3206c433838124b4be3890a8b
-rw-r--r--core/java/android/widget/RemoteViews.java69
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java10
2 files changed, 37 insertions, 42 deletions
diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java
index e29000d..4710798 100644
--- a/core/java/android/widget/RemoteViews.java
+++ b/core/java/android/widget/RemoteViews.java
@@ -128,7 +128,6 @@ public class RemoteViews implements Parcelable, Filter {
private boolean mIsWidgetCollectionChild = false;
private static final OnClickHandler DEFAULT_ON_CLICK_HANDLER = new OnClickHandler();
- private OnClickHandler mOnClickHandler = DEFAULT_ON_CLICK_HANDLER;
/**
* This annotation indicates that a subclass of View is alllowed to be used
@@ -185,8 +184,8 @@ public class RemoteViews implements Parcelable, Filter {
* SUBCLASSES MUST BE IMMUTABLE SO CLONE WORKS!!!!!
*/
private abstract static class Action implements Parcelable {
- public abstract void apply(RemoteViews owner, View root,
- ViewGroup rootParent) throws ActionException;
+ public abstract void apply(View root, ViewGroup rootParent,
+ OnClickHandler handler) throws ActionException;
public int describeContents() {
return 0;
@@ -229,7 +228,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View view = root.findViewById(viewId);
if (!(view instanceof AdapterView<?>)) return;
@@ -260,7 +259,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, final OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -272,7 +271,6 @@ public class RemoteViews implements Parcelable, Filter {
if (target == root) {
target.setTagInternal(com.android.internal.R.id.fillInIntent, fillInIntent);
} else if (target != null && fillInIntent != null) {
- final OnClickHandler clicker = owner.mOnClickHandler;
OnClickListener listener = new OnClickListener() {
public void onClick(View v) {
// Insure that this view is a child of an AdapterView
@@ -310,7 +308,7 @@ public class RemoteViews implements Parcelable, Filter {
rect.bottom = (int) ((pos[1] + v.getHeight()) * appScale + 0.5f);
fillInIntent.setSourceBounds(rect);
- clicker.onClickHandler(v, pendingIntent, fillInIntent);
+ handler.onClickHandler(v, pendingIntent, fillInIntent);
}
};
@@ -342,14 +340,13 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, final OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
// If the view isn't an AdapterView, setting a PendingIntent template doesn't make sense
if (target instanceof AdapterView<?>) {
AdapterView<?> av = (AdapterView<?>) target;
- final OnClickHandler clicker = owner.mOnClickHandler;
// The PendingIntent template is stored in the view's tag.
OnItemClickListener listener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
@@ -389,7 +386,7 @@ public class RemoteViews implements Parcelable, Filter {
final Intent intent = new Intent();
intent.setSourceBounds(rect);
- clicker.onClickHandler(view, pendingIntentTemplate, fillInIntent);
+ handler.onClickHandler(view, pendingIntentTemplate, fillInIntent);
}
}
};
@@ -426,7 +423,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -494,7 +491,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, final OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -515,7 +512,6 @@ public class RemoteViews implements Parcelable, Filter {
if (target != null) {
// If the pendingIntent is null, we clear the onClickListener
- final OnClickHandler clicker = owner.mOnClickHandler;
OnClickListener listener = null;
if (pendingIntent != null) {
listener = new OnClickListener() {
@@ -535,7 +531,7 @@ public class RemoteViews implements Parcelable, Filter {
final Intent intent = new Intent();
intent.setSourceBounds(rect);
- clicker.onClickHandler(v, pendingIntent, intent);
+ handler.onClickHandler(v, pendingIntent, intent);
}
};
}
@@ -602,7 +598,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -662,7 +658,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View view = root.findViewById(viewId);
if (view == null) return;
@@ -786,11 +782,11 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root,
- ViewGroup rootParent) throws ActionException {
+ public void apply(View root, ViewGroup rootParent,
+ OnClickHandler handler) throws ActionException {
ReflectionAction ra = new ReflectionAction(viewId, methodName, ReflectionAction.BITMAP,
bitmap);
- ra.apply(owner, root, rootParent);
+ ra.apply(root, rootParent, handler);
}
@Override
@@ -1006,7 +1002,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final View view = root.findViewById(viewId);
if (view == null) return;
@@ -1108,13 +1104,13 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final Context context = root.getContext();
final ViewGroup target = (ViewGroup) root.findViewById(viewId);
if (target == null) return;
if (nestedViews != null) {
// Inflate nested views and add as children
- target.addView(nestedViews.apply(owner, context, target));
+ target.addView(nestedViews.apply(context, target, handler));
} else {
// Clear all children when nested views omitted
target.removeAllViews();
@@ -1175,7 +1171,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final Context context = root.getContext();
final TextView target = (TextView) root.findViewById(viewId);
if (target == null) return;
@@ -1217,7 +1213,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final Context context = root.getContext();
final TextView target = (TextView) root.findViewById(viewId);
if (target == null) return;
@@ -1261,7 +1257,7 @@ public class RemoteViews implements Parcelable, Filter {
}
@Override
- public void apply(RemoteViews owner, View root, ViewGroup rootParent) {
+ public void apply(View root, ViewGroup rootParent, OnClickHandler handler) {
final Context context = root.getContext();
final View target = root.findViewById(viewId);
if (target == null) return;
@@ -2099,11 +2095,6 @@ public class RemoteViews implements Parcelable, Filter {
return this;
}
- /** @hide */
- public void setOnClickHandler(OnClickHandler handler) {
- mOnClickHandler = handler;
- }
-
/**
* Inflates the view hierarchy represented by this object and applies
* all of the actions.
@@ -2116,10 +2107,11 @@ public class RemoteViews implements Parcelable, Filter {
* @return The inflated view hierarchy
*/
public View apply(Context context, ViewGroup parent) {
- return apply(this, context, parent);
+ return apply(context, parent, DEFAULT_ON_CLICK_HANDLER);
}
- View apply(RemoteViews owner, Context context, ViewGroup parent) {
+ /** @hide */
+ public View apply(Context context, ViewGroup parent, OnClickHandler handler) {
RemoteViews rvToApply = getRemoteViewsToApply(context);
View result;
@@ -2134,7 +2126,7 @@ public class RemoteViews implements Parcelable, Filter {
result = inflater.inflate(rvToApply.getLayoutId(), parent, false);
- rvToApply.performApply(owner, result, parent);
+ rvToApply.performApply(result, parent, handler);
return result;
}
@@ -2148,6 +2140,11 @@ public class RemoteViews implements Parcelable, Filter {
* the {@link #apply(Context,ViewGroup)} call.
*/
public void reapply(Context context, View v) {
+ reapply(context, v, DEFAULT_ON_CLICK_HANDLER);
+ }
+
+ /** @hide */
+ public void reapply(Context context, View v, OnClickHandler handler) {
RemoteViews rvToApply = getRemoteViewsToApply(context);
// In the case that a view has this RemoteViews applied in one orientation, is persisted
@@ -2161,15 +2158,15 @@ public class RemoteViews implements Parcelable, Filter {
}
prepareContext(context);
- rvToApply.performApply(this, v, (ViewGroup) v.getParent());
+ rvToApply.performApply(v, (ViewGroup) v.getParent(), handler);
}
- private void performApply(RemoteViews owner, View v, ViewGroup parent) {
+ private void performApply(View v, ViewGroup parent, OnClickHandler handler) {
if (mActions != null) {
final int count = mActions.size();
for (int i = 0; i < count; i++) {
Action a = mActions.get(i);
- a.apply(owner, v, parent);
+ a.apply(v, parent, handler);
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
index ec99513..1204a89 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/BaseStatusBar.java
@@ -577,11 +577,9 @@ public abstract class BaseStatusBar extends SystemUI implements
View expandedLarge = null;
Exception exception = null;
try {
- oneU.setOnClickHandler(mOnClickHandler);
- expandedOneU = oneU.apply(mContext, adaptive);
+ expandedOneU = oneU.apply(mContext, adaptive, mOnClickHandler);
if (large != null) {
- large.setOnClickHandler(mOnClickHandler);
- expandedLarge = large.apply(mContext, adaptive);
+ expandedLarge = large.apply(mContext, adaptive, mOnClickHandler);
}
}
catch (RuntimeException e) {
@@ -872,9 +870,9 @@ public abstract class BaseStatusBar extends SystemUI implements
oldEntry.notification = notification;
try {
// Reapply the RemoteViews
- contentView.reapply(mContext, oldEntry.expanded);
+ contentView.reapply(mContext, oldEntry.expanded, mOnClickHandler);
if (bigContentView != null && oldEntry.getLargeView() != null) {
- bigContentView.reapply(mContext, oldEntry.getLargeView());
+ bigContentView.reapply(mContext, oldEntry.getLargeView(), mOnClickHandler);
}
// update the contentIntent
final PendingIntent contentIntent = notification.notification.contentIntent;