diff --git a/src/com/android/launcher2/AppsCustomizePagedView.java b/src/com/android/launcher2/AppsCustomizePagedView.java
index 039ee8a..986e852 100644
--- a/src/com/android/launcher2/AppsCustomizePagedView.java
+++ b/src/com/android/launcher2/AppsCustomizePagedView.java
@@ -791,7 +791,7 @@
                 }
             }
             if (showOutOfSpaceMessage) {
-                mLauncher.showOutOfSpaceMessage();
+                mLauncher.showOutOfSpaceMessage(false);
             }
 
             d.deferDragViewCleanupPostAnimation = false;
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 9494d27..6464a7d 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -881,7 +881,7 @@
             cellXY[0] = cellX;
             cellXY[1] = cellY;
         } else if (!layout.findCellForSpan(cellXY, 1, 1)) {
-            showOutOfSpaceMessage();
+            showOutOfSpaceMessage(isHotseatLayout(layout));
             return;
         }
 
@@ -944,7 +944,7 @@
         }
 
         if (!foundCellSpan) {
-            showOutOfSpaceMessage();
+            showOutOfSpaceMessage(isHotseatLayout(layout));
             return;
         }
 
@@ -1039,7 +1039,7 @@
                     }
                 }.start();
             }
-            showOutOfSpaceMessage();
+            showOutOfSpaceMessage(isHotseatLayout(layout));
             return;
         }
 
@@ -1225,8 +1225,9 @@
         launcherInfo.hostView = null;
     }
 
-    void showOutOfSpaceMessage() {
-        Toast.makeText(this, getString(R.string.out_of_space), Toast.LENGTH_SHORT).show();
+    void showOutOfSpaceMessage(boolean isHotseatLayout) {
+        int strId = (isHotseatLayout ? R.string.hotseat_out_of_space : R.string.out_of_space);
+        Toast.makeText(this, getString(strId), Toast.LENGTH_SHORT).show();
     }
 
     public LauncherAppWidgetHost getAppWidgetHost() {
@@ -2751,7 +2752,7 @@
      */
     void addExternalItemToScreen(ItemInfo itemInfo, final CellLayout layout) {
         if (!mWorkspace.addExternalItemToScreen(itemInfo, layout)) {
-            showOutOfSpaceMessage();
+            showOutOfSpaceMessage(isHotseatLayout(layout));
         }
     }
 
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index f1941b3..5c8694d 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -2064,7 +2064,8 @@
             if (!foundCell) {
                 // Don't show the message if we are dropping on the AllApps button and the hotseat
                 // is full
-                if (mTargetCell != null && mLauncher.isHotseatLayout(mDragTargetLayout)) {
+                boolean isHotseat = mLauncher.isHotseatLayout(mDragTargetLayout);
+                if (mTargetCell != null && isHotseat) {
                     Hotseat hotseat = mLauncher.getHotseat();
                     if (hotseat.isAllAppsButtonRank(
                             hotseat.getOrderInHotseat(mTargetCell[0], mTargetCell[1]))) {
@@ -2072,7 +2073,7 @@
                     }
                 }
 
-                mLauncher.showOutOfSpaceMessage();
+                mLauncher.showOutOfSpaceMessage(isHotseat);
                 return false;
             }
         }
@@ -2943,7 +2944,7 @@
             onDropExternal(dragInfo.dropPos, (ItemInfo) dragInfo, (CellLayout) layout, false);
             return true;
         }
-        mLauncher.showOutOfSpaceMessage();
+        mLauncher.showOutOfSpaceMessage(mLauncher.isHotseatLayout(layout));
         return false;
     }
 
