Merge "Import revised translations."
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index b95feaf..3df8c4a 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -251,6 +251,7 @@
 
     private static HashMap<Long, FolderInfo> sFolders = new HashMap<Long, FolderInfo>();
 
+    // The "signpost" images along the bottom of the screen (only in some layouts)
     private ImageView mPreviousView;
     private ImageView mNextView;
 
@@ -1691,6 +1692,12 @@
         return mWorkspaceLoading || mWaitingForResult;
     }
 
+    // Is the workspace preview (brought up by long-pressing on a signpost icon) visible?
+    private boolean isPreviewVisible() {
+        return (mPreviousView != null && mPreviousView.getTag() != null) ||
+                (mNextView != null && mNextView.getTag() != null);
+    }
+
     private void addItems() {
         if (LauncherApplication.isScreenXLarge()) {
             // Animate the widget chooser up from the bottom of the screen
@@ -1984,13 +1991,14 @@
     public void onBackPressed() {
         if (mState == State.ALL_APPS || mState == State.CUSTOMIZE) {
             showWorkspace(true);
-        } else {
+        } else if (mWorkspace.getOpenFolder() != null) {
             closeFolder();
-        }
-        // Some launcher layouts don't have a previous and next view
-        if (mPreviousView != null) {
+        } else if (isPreviewVisible()) {
             dismissPreview(mPreviousView);
             dismissPreview(mNextView);
+        } else {
+            // Back button is a no-op here, but give at least some feedback for the button press
+            mWorkspace.showOutlinesTemporarily();
         }
     }
 
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index ef0cf22..3e5a967 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -896,7 +896,7 @@
         }
     }
 
-    public void showOutlines() {
+    void showOutlines() {
         if (!mIsSmall && !mIsInUnshrinkAnimation) {
             if (mChildrenOutlineFadeOutAnimation != null) mChildrenOutlineFadeOutAnimation.cancel();
             if (mChildrenOutlineFadeInAnimation != null) mChildrenOutlineFadeInAnimation.cancel();
@@ -906,7 +906,7 @@
         }
     }
 
-    public void hideOutlines() {
+    void hideOutlines() {
         if (!mIsSmall && !mIsInUnshrinkAnimation) {
             if (mChildrenOutlineFadeInAnimation != null) mChildrenOutlineFadeInAnimation.cancel();
             if (mChildrenOutlineFadeOutAnimation != null) mChildrenOutlineFadeOutAnimation.cancel();
@@ -917,6 +917,12 @@
         }
     }
 
+    public void showOutlinesTemporarily() {
+        if (!mIsPageMoving && !isTouchActive()) {
+            snapToPage(mCurrentPage);
+        }
+    }
+
     public void setChildrenOutlineAlpha(float alpha) {
         mChildrenOutlineAlpha = alpha;
         for (int i = 0; i < getChildCount(); i++) {