diff --git a/src/com/android/calculator2/DragLayout.java b/src/com/android/calculator2/DragLayout.java
index 74b0a8e..4948f56 100644
--- a/src/com/android/calculator2/DragLayout.java
+++ b/src/com/android/calculator2/DragLayout.java
@@ -20,6 +20,7 @@
 import android.animation.AnimatorListenerAdapter;
 import android.animation.ValueAnimator;
 import android.content.Context;
+import android.graphics.Canvas;
 import android.graphics.PointF;
 import android.graphics.Rect;
 import android.os.Bundle;
@@ -32,6 +33,7 @@
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -52,6 +54,7 @@
 
     private final Map<Integer, PointF> mLastMotionPoints = new HashMap<>();
     private final Rect mHitRect = new Rect();
+    private final List<Rect> mExclusionRects = new ArrayList<>();
 
     private int mVerticalRange;
     private boolean mIsOpen;
@@ -96,6 +99,16 @@
             }
             child.layout(0, top, child.getMeasuredWidth(), top + child.getMeasuredHeight());
         }
+
+        if (changed) {
+            updateExclusionRects();
+        }
+    }
+
+    @Override
+    public void onDraw(Canvas canvas) {
+        super.onDraw(canvas);
+        updateExclusionRects();
     }
 
     @Override
@@ -249,6 +262,11 @@
         mDragCallbacks.remove(callback);
     }
 
+    private void updateExclusionRects() {
+        mExclusionRects.add(0, mHitRect);
+        setSystemGestureExclusionRects(mExclusionRects);
+    }
+
     /**
      * Callback when the layout is closed.
      * We use this to pop the HistoryFragment off the backstack.
