Fix the lock issue on Home. This was caused by onPrepareDialog().

onPrepareDialog() is called after a dialog was created/shown at least once. But
onPrepareDialog() does not mean the dialog will be shown. Thus Home would
sometimes lock itself without showing the dialog the user would normally use to
unlock the workspace.
diff --git a/src/com/android/launcher/Launcher.java b/src/com/android/launcher/Launcher.java
index 8863bd9..000ce14 100644
--- a/src/com/android/launcher/Launcher.java
+++ b/src/com/android/launcher/Launcher.java
@@ -2014,14 +2014,14 @@
     protected void onPrepareDialog(int id, Dialog dialog) {
         switch (id) {
             case DIALOG_CREATE_SHORTCUT:
-                mWorkspace.lock();
                 break;
             case DIALOG_RENAME_FOLDER:
-                mWorkspace.lock();
-                EditText input = (EditText) dialog.findViewById(R.id.folder_name);
-                final CharSequence text = mFolderInfo.title;
-                input.setText(text);
-                input.setSelection(0, text.length());
+                if (mFolderInfo != null) {
+                    EditText input = (EditText) dialog.findViewById(R.id.folder_name);
+                    final CharSequence text = mFolderInfo.title;
+                    input.setText(text);
+                    input.setSelection(0, text.length());
+                }
                 break;
         }
     }
@@ -2090,7 +2090,15 @@
                 }
             );
             builder.setView(layout);
-            return builder.create();
+
+            final AlertDialog dialog = builder.create();
+            dialog.setOnShowListener(new DialogInterface.OnShowListener() {
+                public void onShow(DialogInterface dialog) {
+                    mWorkspace.lock();
+                }
+            });
+
+            return dialog;
         }
 
         private void changeFolderName() {
@@ -2133,7 +2141,9 @@
      * appropriate activity.
      */
     private class CreateShortcut implements DialogInterface.OnClickListener,
-            DialogInterface.OnCancelListener, DialogInterface.OnDismissListener {
+            DialogInterface.OnCancelListener, DialogInterface.OnDismissListener,
+            DialogInterface.OnShowListener {
+
         private AddAdapter mAdapter;
 
         Dialog createDialog() {
@@ -2150,6 +2160,7 @@
             AlertDialog dialog = builder.create();
             dialog.setOnCancelListener(this);
             dialog.setOnDismissListener(this);
+            dialog.setOnShowListener(this);
 
             return dialog;
         }
@@ -2239,6 +2250,10 @@
                 }
             }
         }
+
+        public void onShow(DialogInterface dialog) {
+            mWorkspace.lock();
+        }
     }
 
     /**