OSDN Git Service

Fix 6583164: Make navbar slippery when shade is open
authorJim Miller <jaggies@google.com>
Thu, 31 May 2012 20:34:16 +0000 (13:34 -0700)
committerJim Miller <jaggies@google.com>
Thu, 31 May 2012 20:34:16 +0000 (13:34 -0700)
Change-Id: Ie7bc726dd292b8b363c155492fb620e49a123f05

packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

index 3a50560..ecdaa39 100644 (file)
@@ -484,14 +484,7 @@ public class PhoneStatusBar extends BaseStatusBar {
 
     @Override
     public void showSearchPanel() {
-        // XXX This is a bit of a hack.  Since navbar is no longer slippery, we use the
-        // gesture to dismiss the expanded statusbar.
-        if (mExpanded) {
-            animateCollapse();
-            return;
-        } else {
-            super.showSearchPanel();
-        }
+        super.showSearchPanel();
         WindowManager.LayoutParams lp =
             (android.view.WindowManager.LayoutParams) mNavigationBarView.getLayoutParams();
         lp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
@@ -1044,6 +1037,7 @@ public class PhoneStatusBar extends BaseStatusBar {
 
         mExpandedVisible = true;
         mNotificationPanel.setVisibility(View.VISIBLE);
+        makeSlippery(mNavigationBarView, true);
 
         updateExpandedViewPos(EXPANDED_LEAVE_ALONE);
 
@@ -1059,6 +1053,16 @@ public class PhoneStatusBar extends BaseStatusBar {
         visibilityChanged(true);
     }
 
+    private static void makeSlippery(View view, boolean slippery) {
+        WindowManager.LayoutParams lp = (WindowManager.LayoutParams) view.getLayoutParams();
+        if (slippery) {
+            lp.flags |= WindowManager.LayoutParams.FLAG_SLIPPERY;
+        } else {
+            lp.flags &= ~WindowManager.LayoutParams.FLAG_SLIPPERY;
+        }
+        WindowManagerImpl.getDefault().updateViewLayout(view, lp);
+    }
+
     public void animateExpand() {
         if (SPEW) Slog.d(TAG, "Animate expand: expanded=" + mExpanded);
         if ((mDisabled & StatusBarManager.DISABLE_EXPAND) != 0) {
@@ -1144,6 +1148,7 @@ public class PhoneStatusBar extends BaseStatusBar {
         mExpandedVisible = false;
         visibilityChanged(false);
         mNotificationPanel.setVisibility(View.INVISIBLE);
+        makeSlippery(mNavigationBarView, false);
 
         // Shrink the window to the size of the status bar only
         WindowManager.LayoutParams lp = (WindowManager.LayoutParams) mStatusBarWindow.getLayoutParams();