auto import from //branches/cupcake/...@131421
diff --git a/src/com/android/settings/UserDictionarySettings.java b/src/com/android/settings/UserDictionarySettings.java
index 8b86a6b..89d5279 100644
--- a/src/com/android/settings/UserDictionarySettings.java
+++ b/src/com/android/settings/UserDictionarySettings.java
@@ -44,6 +44,7 @@
 public class UserDictionarySettings extends ListActivity {
 
     private static final String INSTANCE_KEY_DIALOG_EDITING_WORD = "DIALOG_EDITING_WORD";
+    private static final String INSTANCE_KEY_ADDED_WORD = "DIALOG_ADDED_WORD";
 
     private static final String[] QUERY_PROJECTION = {
         UserDictionary.Words._ID, UserDictionary.Words.WORD
@@ -70,6 +71,9 @@
     
     private Cursor mCursor;
     
+    private boolean mAddedWordAlready;
+    private boolean mAutoReturn;
+    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -85,15 +89,17 @@
         ListView listView = getListView();
         listView.setFastScrollEnabled(true);
         listView.setEmptyView(emptyView);
-        
+
         registerForContextMenu(listView);
     }
     
     @Override
     protected void onResume() {
         super.onResume();
-        if (getIntent().getAction().equals("com.android.settings.USER_DICTIONARY_INSERT")) {
+        if (!mAddedWordAlready 
+                && getIntent().getAction().equals("com.android.settings.USER_DICTIONARY_INSERT")) {
             String word = getIntent().getStringExtra(EXTRA_WORD);
+            mAutoReturn = true;
             if (word != null) {
                 showAddOrEditDialog(word);
             }
@@ -103,12 +109,14 @@
     protected void onRestoreInstanceState(Bundle state) {
         super.onRestoreInstanceState(state);
         mDialogEditingWord = state.getString(INSTANCE_KEY_DIALOG_EDITING_WORD);
+        mAddedWordAlready = state.getBoolean(INSTANCE_KEY_ADDED_WORD, false);
     }
 
     @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
         outState.putString(INSTANCE_KEY_DIALOG_EDITING_WORD, mDialogEditingWord);
+        outState.putBoolean(INSTANCE_KEY_ADDED_WORD, mAddedWordAlready);
     }
 
     private Cursor createCursor() {
@@ -196,9 +204,13 @@
                 .setView(content)
                 .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dialog, int which) {
-                        onAddOrEditFinished(editText.getText().toString());                        
+                        onAddOrEditFinished(editText.getText().toString());
+                        if (mAutoReturn) finish();
                     }})
-                .setNegativeButton(android.R.string.cancel, null)
+                .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int which) {
+                        if (mAutoReturn) finish();                        
+                    }})
                 .create();
     }
 
@@ -220,8 +232,9 @@
         
         // TODO: present UI for picking whether to add word to all locales, or current.
         UserDictionary.Words.addWord(this, word.toString(),
-                128, UserDictionary.Words.LOCALE_TYPE_ALL);
+                250, UserDictionary.Words.LOCALE_TYPE_ALL);
         mCursor.requery();
+        mAddedWordAlready = true;
     }
 
     private void deleteWord(String word) {