Merge "Import revised translations."
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index 2f1c7ff..fd8ba4e 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -234,6 +234,7 @@
     private boolean mAutoAddToDefaultGroup;
 
     private boolean mEnabled = true;
+    private boolean mRequestFocus;
 
     public ContactEditorFragment() {
     }
@@ -412,6 +413,8 @@
         setIntentExtras(mIntentExtras);
         mIntentExtras = null;
 
+        mRequestFocus = true;
+
         bindEditors();
     }
 
@@ -508,6 +511,8 @@
             mState.add(insert);
         }
 
+        mRequestFocus = true;
+
         bindEditors();
     }
 
@@ -552,6 +557,10 @@
             if (editor instanceof RawContactEditorView) {
                 final RawContactEditorView rawContactEditor = (RawContactEditorView) editor;
                 final TextFieldsEditorView nameEditor = rawContactEditor.getNameEditor();
+                if (mRequestFocus) {
+                    nameEditor.requestFocus();
+                    mRequestFocus = false;
+                }
                 nameEditor.setEditorListener(new EditorListener() {
 
                     @Override
@@ -572,6 +581,8 @@
             }
         }
 
+        mRequestFocus = false;
+
         bindGroupMetaData();
 
         // Show editor now that we've loaded state
@@ -581,6 +592,7 @@
         // Activity can be null if we have been detached from the Activity
         final Activity activity = getActivity();
         if (activity != null) activity.invalidateOptionsMenu();
+
     }
 
     private void bindGroupMetaData() {
@@ -809,7 +821,8 @@
     }
 
     private boolean revert() {
-        if (mState == null || mState.buildDiff().isEmpty()) {
+        final AccountTypeManager accountTypes = AccountTypeManager.getInstance(mContext);
+        if (mState == null || !EntityModifier.hasChanges(mState, accountTypes)) {
             doRevertAction();
         } else {
             CancelEditDialogFragment.show(this);
diff --git a/src/com/android/contacts/editor/KindSectionView.java b/src/com/android/contacts/editor/KindSectionView.java
index 4ce8dda..aaeafac 100644
--- a/src/com/android/contacts/editor/KindSectionView.java
+++ b/src/com/android/contacts/editor/KindSectionView.java
@@ -269,7 +269,13 @@
         }
 
         final View newField = createEditorView(values);
-        newField.requestFocus();
+        post(new Runnable() {
+
+            @Override
+            public void run() {
+                newField.requestFocus();
+            }
+        });
 
         // For non-lists (e.g. Notes we can only have one field. in that case we need to disable
         // the add button
diff --git a/src/com/android/contacts/model/EntityModifier.java b/src/com/android/contacts/model/EntityModifier.java
index a447694..4505142 100644
--- a/src/com/android/contacts/model/EntityModifier.java
+++ b/src/com/android/contacts/model/EntityModifier.java
@@ -443,22 +443,21 @@
      */
     public static boolean isEmpty(ValuesDelta values, DataKind kind) {
         if (Photo.CONTENT_ITEM_TYPE.equals(kind.mimeType)) {
-            return false;
+            return values.isInsert() && values.getAsByteArray(Photo.PHOTO) == null;
         }
 
         // No defined fields mean this row is always empty
         if (kind.fieldList == null) return true;
 
-        boolean hasValues = false;
         for (EditField field : kind.fieldList) {
             // If any field has values, we're not empty
             final String value = values.getAsString(field.column);
             if (ContactsUtils.isGraphic(value)) {
-                hasValues = true;
+                return false;
             }
         }
 
-        return !hasValues;
+        return true;
     }
 
     /**