summaryrefslogtreecommitdiffstats
path: root/src/com/android/browser/PhoneUi.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/browser/PhoneUi.java')
-rw-r--r--src/com/android/browser/PhoneUi.java44
1 files changed, 41 insertions, 3 deletions
diff --git a/src/com/android/browser/PhoneUi.java b/src/com/android/browser/PhoneUi.java
index 73c1b99..a9ae25a 100644
--- a/src/com/android/browser/PhoneUi.java
+++ b/src/com/android/browser/PhoneUi.java
@@ -17,12 +17,17 @@
package com.android.browser;
import android.app.Activity;
+import android.content.Context;
+import android.graphics.PixelFormat;
import android.util.Log;
import android.view.ActionMode;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Menu;
+import android.view.MotionEvent;
import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
import android.webkit.WebView;
/**
@@ -34,6 +39,7 @@ public class PhoneUi extends BaseUi {
private TitleBar mTitleBar;
private ActiveTabsPage mActiveTabsPage;
+ private TouchProxy mTitleOverlay;
boolean mExtendedMenuOpen;
boolean mOptionsMenuOpen;
@@ -140,7 +146,7 @@ public class PhoneUi extends BaseUi {
}
@Override
- void showTitleBar() {
+ protected void showTitleBar() {
if (canShowTitleBar()) {
setTitleGravity(Gravity.TOP);
super.showTitleBar();
@@ -191,8 +197,14 @@ public class PhoneUi extends BaseUi {
@Override
public void onOptionsMenuOpened() {
mOptionsMenuOpen = true;
- // options menu opened, show fake title bar
+ // options menu opened, show title bar
showTitleBar();
+ if (mTitleOverlay == null) {
+ // This assumes that getTitleBar always returns the same View
+ mTitleOverlay = new TouchProxy(mActivity, getTitleBar());
+ }
+ mActivity.getWindowManager().addView(mTitleOverlay,
+ mTitleOverlay.getWindowLayoutParams());
}
@Override
@@ -206,7 +218,8 @@ public class PhoneUi extends BaseUi {
@Override
public void onOptionsMenuClosed(boolean inLoad) {
mOptionsMenuOpen = false;
- if (!inLoad) {
+ mActivity.getWindowManager().removeView(mTitleOverlay);
+ if (!inLoad && !getTitleBar().hasFocus()) {
hideTitleBar();
}
}
@@ -241,4 +254,29 @@ public class PhoneUi extends BaseUi {
return false;
}
+ static class TouchProxy extends View {
+
+ View mTarget;
+
+ TouchProxy(Context context, View target) {
+ super(context);
+ mTarget = target;
+ }
+
+ @Override
+ public boolean dispatchTouchEvent(MotionEvent event) {
+ return mTarget.dispatchTouchEvent(event);
+ }
+
+ WindowManager.LayoutParams getWindowLayoutParams() {
+ WindowManager.LayoutParams params =
+ new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT,
+ WindowManager.LayoutParams.TYPE_APPLICATION,
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+ PixelFormat.TRANSPARENT);
+ params.gravity = Gravity.TOP;
+ return params;
+ }
+ }
}