Fix 6441282: confine search gesture region on tablet navbar

Depending on the device, this will be one of the id's in the navbar
view hierarchy used in the source.  It will default to the navbar
view if one isn't found.

Change-Id: I388412d4f247f7d2d102768708237711d722de3d
This commit is contained in:
Jim Miller
2012-05-17 19:47:55 -07:00
parent f7a44e8168
commit 161538985e
2 changed files with 25 additions and 7 deletions

View File

@ -33,11 +33,7 @@ public class DelegateViewHelper {
private float mTriggerThreshhold;
public DelegateViewHelper(View sourceView) {
mSourceView = sourceView;
if (mSourceView != null) {
mTriggerThreshhold = mSourceView.getContext().getResources()
.getDimension(R.dimen.navbar_search_up_threshhold);
}
setSourceView(sourceView);
}
public void setDelegateView(View view) {
@ -92,4 +88,12 @@ public class DelegateViewHelper {
}
return false;
}
public void setSourceView(View view) {
mSourceView = view;
if (mSourceView != null) {
mTriggerThreshhold = mSourceView.getContext().getResources()
.getDimension(R.dimen.navbar_search_up_threshhold);
}
}
}

View File

@ -16,6 +16,7 @@
package com.android.systemui.statusbar.tablet;
import com.android.systemui.R;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.DelegateViewHelper;
@ -37,8 +38,7 @@ public class TabletStatusBarView extends FrameLayout {
private DelegateViewHelper mDelegateHelper;
public TabletStatusBarView(Context context) {
super(context);
mDelegateHelper = new DelegateViewHelper(this);
this(context, null);
}
public TabletStatusBarView(Context context, AttributeSet attrs) {
@ -54,6 +54,20 @@ public class TabletStatusBarView extends FrameLayout {
mDelegateHelper.setBar(phoneStatusBar);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
// Find the view we wish to grab events from in order to detect search gesture.
// Depending on the device, this will be one of the id's listed below.
// If we don't find one, we'll use the view provided in the constructor above (this view).
View view = null;
if ((view = findViewById(R.id.navigationArea)) != null) {
mDelegateHelper.setSourceView(view);
} else if ((view = findViewById(R.id.nav_buttons)) != null) {
mDelegateHelper.setSourceView(view);
}
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {