Go back to top of list when Settings is relaunched

Also fixes slight movements when coming back from Add account.

Bug: 7312513
Bug: 7318452
Change-Id: I5b07262de52e6bdf98e75fff98a032afd74fc0e5
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 9c7f848..b52c2e2 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -271,9 +271,11 @@
         super.onNewIntent(intent);
 
         // If it is not launched from history, then reset to top-level
-        if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0
-                && mFirstHeader != null && !onIsHidingHeaders() && onIsMultiPane()) {
-            switchToHeaderLocal(mFirstHeader);
+        if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
+            if (mFirstHeader != null && !onIsHidingHeaders() && onIsMultiPane()) {
+                switchToHeaderLocal(mFirstHeader);
+            }
+            getListView().setSelectionFromTop(0, 0);
         }
     }
 
@@ -282,7 +284,9 @@
             Integer index = mHeaderIndexMap.get(id);
             if (index != null) {
                 getListView().setItemChecked(index, true);
-                getListView().smoothScrollToPosition(index);
+                if (isMultiPane()) {
+                    getListView().smoothScrollToPosition(index);
+                }
             }
         }
     }