diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index c9606ca..bea5d49 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -147,7 +147,7 @@
     protected void onFinishInflate() {
         super.onFinishInflate();
         mHeader = (StatusBarHeaderView) findViewById(R.id.header);
-        mHeader.getBackgroundView().setOnClickListener(this);
+        mHeader.setOnClickListener(this);
         mHeader.setOverlayParent(this);
         mKeyguardStatusView = findViewById(R.id.keyguard_status_view);
         mQsContainer = findViewById(R.id.quick_settings_container);
@@ -484,6 +484,9 @@
             mInitialTouchY = event.getX();
             mInitialTouchX = event.getY();
         }
+        if (mExpandedHeight != 0) {
+            handleQsDown(event);
+        }
         if (mQsTracking || mQsExpanded) {
             onQsTouch(event);
             if (!mConflictingQsExpansionGesture) {
@@ -498,6 +501,17 @@
         return true;
     }
 
+    private void handleQsDown(MotionEvent event) {
+        if (event.getActionMasked() == MotionEvent.ACTION_DOWN
+                && shouldQuickSettingsIntercept(event.getX(), event.getY(), 0)) {
+            mQsTracking = true;
+            onQsExpansionStarted();
+            mInitialHeightOnTouch = mQsExpansionHeight;
+            mInitialTouchY = event.getX();
+            mInitialTouchX = event.getY();
+        }
+    }
+
     @Override
     protected boolean flingExpands(float vel, float vectorVel) {
         boolean expands = super.flingExpands(vel, vectorVel);
@@ -1120,7 +1134,7 @@
 
     @Override
     public void onClick(View v) {
-        if (v == mHeader.getBackgroundView()) {
+        if (v == mHeader) {
             onQsExpansionStarted();
             if (mQsExpanded) {
                 flingSettings(0 /* vel */, false /* expand */);
@@ -1251,4 +1265,9 @@
     public boolean isQsExpanded() {
         return mQsExpanded;
     }
+
+    @Override
+    public boolean shouldDelayChildPressedState() {
+        return true;
+    }
 }
