diff --git a/src/com/android/launcher2/DragLayer.java b/src/com/android/launcher2/DragLayer.java
index c4d75d6..101ed5d 100644
--- a/src/com/android/launcher2/DragLayer.java
+++ b/src/com/android/launcher2/DragLayer.java
@@ -16,8 +16,6 @@
 
 package com.android.launcher2;
 
-import java.util.ArrayList;
-
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.Rect;
@@ -29,7 +27,7 @@
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 
-import com.android.launcher.R;
+import java.util.ArrayList;
 
 /**
  * A ViewGroup that coordinates dragging across its descendants
@@ -43,7 +41,6 @@
             new ArrayList<AppWidgetResizeFrame>();
     private AppWidgetResizeFrame mCurrentResizeFrame;
     private int mXDown, mYDown;
-    private Folder mCurrentFolder = null;
     private Launcher mLauncher;
 
     /**
@@ -87,16 +84,17 @@
             }
         }
 
-        if (mCurrentFolder != null && intercept) {
-            if (mCurrentFolder.isEditingName()) {
-                getDescendantRectRelativeToSelf(mCurrentFolder.getEditTextRegion(), hitRect);
+        Folder currentFolder = mLauncher.getWorkspace().getOpenFolder();
+        if (currentFolder != null && intercept) {
+            if (currentFolder.isEditingName()) {
+                getDescendantRectRelativeToSelf(currentFolder.getEditTextRegion(), hitRect);
                 if (!hitRect.contains(x, y)) {
-                    mCurrentFolder.dismissEditingName();
+                    currentFolder.dismissEditingName();
                     return true;
                 }
             }
 
-            getDescendantRectRelativeToSelf(mCurrentFolder, hitRect);
+            getDescendantRectRelativeToSelf(currentFolder, hitRect);
             if (!hitRect.contains(x, y)) {
                 mLauncher.closeFolder();
                 return true;
@@ -269,8 +267,4 @@
 
         resizeFrame.snapToWidget(false);
     }
-
-    public void setCurrentFolder(Folder f) {
-        mCurrentFolder = f;
-    }
 }
diff --git a/src/com/android/launcher2/Folder.java b/src/com/android/launcher2/Folder.java
index 90d2090..029b89f 100644
--- a/src/com/android/launcher2/Folder.java
+++ b/src/com/android/launcher2/Folder.java
@@ -615,7 +615,7 @@
 
     OnAlarmListener mOnExitAlarmListener = new OnAlarmListener() {
         public void onAlarm(Alarm alarm) {
-            mLauncher.closeFolder(Folder.this);
+            mLauncher.closeFolder();
             mCurrentDragInfo = null;
             mCurrentDragView = null;
             mSuppressOnAdd = false;
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 323c527..5d85957 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -1749,7 +1749,6 @@
         Folder folder = mWorkspace.getOpenFolder();
         if (folder != null) {
             closeFolder(folder);
-            mDragLayer.setCurrentFolder(null);
         }
     }
 
@@ -1763,7 +1762,6 @@
             shrinkAndFadeInFolderIcon(fi);
             mDragController.removeDropTarget((DropTarget)folder);
         }
-
         folder.animateClosed();
     }
 
@@ -1993,7 +1991,6 @@
         info.opened = true;
 
         mWorkspace.addInFullScreen(folder, info.screen);
-        mDragLayer.setCurrentFolder(folder);
         folder.animateOpen();
         folder.onOpen();
     }
