Merge "Don't enter overscroll when dragging fast scrollbar." into ub-launcher3-dorval-polish
diff --git a/res/layout/all_apps.xml b/res/layout/all_apps.xml
index 93662fc..6340619 100644
--- a/res/layout/all_apps.xml
+++ b/res/layout/all_apps.xml
@@ -49,7 +49,7 @@
         <!-- DO NOT CHANGE THE ID -->
         <com.android.launcher3.allapps.AllAppsRecyclerView
             android:id="@+id/apps_list_view"
-            android:layout_below="@+id/search_container"
+            android:layout_below="@id/search_container_all_apps"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:layout_gravity="center_horizontal|top"
@@ -62,7 +62,7 @@
          platform bug, which prevents using custom attributes in <include> tag -->
         <include
             layout="?android:attr/keyboardLayout"
-            android:id="@+id/search_container" />
+            android:id="@id/search_container_all_apps" />
 
         <include layout="@layout/all_apps_fast_scroller" />
 
diff --git a/res/layout/all_apps_search_container.xml b/res/layout/search_container_all_apps.xml
similarity index 98%
rename from res/layout/all_apps_search_container.xml
rename to res/layout/search_container_all_apps.xml
index 2528034..c430521 100644
--- a/res/layout/all_apps_search_container.xml
+++ b/res/layout/search_container_all_apps.xml
@@ -15,7 +15,7 @@
 -->
 <com.android.launcher3.allapps.search.AppsSearchContainerLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/search_container"
+    android:id="@id/search_container_all_apps"
     android:layout_width="match_parent"
     android:layout_height="@dimen/all_apps_search_bar_height"
     android:layout_gravity="center|top"
diff --git a/res/layout/qsb_container.xml b/res/layout/search_container_workspace.xml
similarity index 95%
rename from res/layout/qsb_container.xml
rename to res/layout/search_container_workspace.xml
index 6fa843d..1c617b1 100644
--- a/res/layout/qsb_container.xml
+++ b/res/layout/search_container_workspace.xml
@@ -19,7 +19,7 @@
         android:orientation="vertical"
         android:layout_width="match_parent"
         android:layout_height="0dp"
-        android:id="@+id/qsb_container"
+        android:id="@id/search_container_workspace"
         android:padding="0dp" >
 
     <fragment
diff --git a/res/values-sw720dp/styles.xml b/res/values-sw720dp/styles.xml
index bb0dbc2..72894dc 100644
--- a/res/values-sw720dp/styles.xml
+++ b/res/values-sw720dp/styles.xml
@@ -26,7 +26,7 @@
         <item name="android:windowNoTitle">true</item>
         <item name="android:windowActionModeOverlay">true</item>
         <item name="android:colorEdgeEffect">?android:attr/textColorSecondary</item>
-        <item name="android:keyboardLayout">@layout/all_apps_search_container</item>
+        <item name="android:keyboardLayout">@layout/search_container_all_apps</item>
     </style>
 
     <!-- Workspace -->
diff --git a/res/values/config.xml b/res/values/config.xml
index 00db4ef..e9c62a7 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -140,4 +140,10 @@
     <item type="id" name="action_resize" />
     <item type="id" name="action_deep_shortcuts" />
     <item type="id" name="action_dismiss_notification" />
+
+<!-- QSB IDs. DO not change -->
+    <item type="id" name="search_container_workspace" />
+    <item type="id" name="search_container_hotseat" />
+    <item type="id" name="search_container_all_apps" />
+
 </resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 813fe8f..5bdf512 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -25,7 +25,7 @@
         <item name="android:windowShowWallpaper">true</item>
         <item name="android:windowNoTitle">true</item>
         <item name="android:colorEdgeEffect">#FF757575</item>
-        <item name="android:keyboardLayout">@layout/all_apps_search_container</item>
+        <item name="android:keyboardLayout">@layout/search_container_all_apps</item>
     </style>
 
     <style name="BaseLauncherThemeWithCustomAttrs" parent="@style/BaseLauncherTheme">
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 26c5c9d..6ae4068 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -488,7 +488,7 @@
     }
 
     @Override
-    public View findViewById(int id) {
+    public <T extends View> T findViewById(int id) {
         return mLauncherView.findViewById(id);
     }
 
diff --git a/src/com/android/launcher3/PagedView.java b/src/com/android/launcher3/PagedView.java
index dcc7a9d..185c887 100644
--- a/src/com/android/launcher3/PagedView.java
+++ b/src/com/android/launcher3/PagedView.java
@@ -926,6 +926,7 @@
     @Override
     public void onChildViewRemoved(View parent, View child) {
         updateFreescrollBounds();
+        mCurrentPage = validateNewPage(mCurrentPage);
         invalidate();
     }
 
diff --git a/src/com/android/launcher3/SettingsActivity.java b/src/com/android/launcher3/SettingsActivity.java
index b7b75f8..a34e469 100644
--- a/src/com/android/launcher3/SettingsActivity.java
+++ b/src/com/android/launcher3/SettingsActivity.java
@@ -42,10 +42,12 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        // Display the fragment as the main content.
-        getFragmentManager().beginTransaction()
-                .replace(android.R.id.content, new LauncherSettingsFragment())
-                .commit();
+        if (savedInstanceState == null) {
+            // Display the fragment as the main content.
+            getFragmentManager().beginTransaction()
+                    .replace(android.R.id.content, new LauncherSettingsFragment())
+                    .commit();
+        }
     }
 
     /**
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java
index 56a5f9e..28070b7 100644
--- a/src/com/android/launcher3/Workspace.java
+++ b/src/com/android/launcher3/Workspace.java
@@ -600,12 +600,12 @@
             // In transposed layout, we add the QSB in the Grid. As workspace does not touch the
             // edges, we do not need a full width QSB.
             qsb = LayoutInflater.from(getContext())
-                    .inflate(R.layout.qsb_container,firstPage, false);
+                    .inflate(R.layout.search_container_workspace,firstPage, false);
         }
 
         CellLayout.LayoutParams lp = new CellLayout.LayoutParams(0, 0, firstPage.getCountX(), 1);
         lp.canReorder = false;
-        if (!firstPage.addViewToCellLayout(qsb, 0, R.id.qsb_container, lp, true)) {
+        if (!firstPage.addViewToCellLayout(qsb, 0, R.id.search_container_workspace, lp, true)) {
             Log.e(TAG, "Failed to add to item at (0, 0) to CellLayout");
         }
     }
@@ -623,7 +623,7 @@
         }
 
         // Recycle the QSB widget
-        View qsb = findViewById(R.id.qsb_container);
+        View qsb = findViewById(R.id.search_container_workspace);
         if (qsb != null) {
             ((ViewGroup) qsb.getParent()).removeView(qsb);
         }
diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java
index 499eb45..4fb0b86 100644
--- a/src/com/android/launcher3/allapps/AllAppsContainerView.java
+++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java
@@ -230,7 +230,7 @@
             mAppsRecyclerView.addOnScrollListener(new SpringMotionOnScrollListener());
         }
 
-        mSearchContainer = findViewById(R.id.search_container);
+        mSearchContainer = findViewById(R.id.search_container_all_apps);
         mSearchUiManager = (SearchUiManager) mSearchContainer;
         mSearchUiManager.initialize(mApps, mAppsRecyclerView);
 
diff --git a/src/com/android/launcher3/dragndrop/DragView.java b/src/com/android/launcher3/dragndrop/DragView.java
index 022b3b8..09cfc1e 100644
--- a/src/com/android/launcher3/dragndrop/DragView.java
+++ b/src/com/android/launcher3/dragndrop/DragView.java
@@ -222,11 +222,11 @@
                     int w = mBitmap.getWidth();
                     int h = mBitmap.getHeight();
                     AdaptiveIconDrawable adaptiveIcon = (AdaptiveIconDrawable) dr;
-                    adaptiveIcon.setBounds(0, 0, w, h);
                     float blurSizeOutline = mLauncher.getResources()
                             .getDimension(R.dimen.blur_size_medium_outline);
                     float normalizationScale = IconNormalizer.getInstance(mLauncher)
                             .getScale(adaptiveIcon, null, null, null) * ((w - blurSizeOutline) / w);
+                    adaptiveIcon.setBounds(0, 0, w, h);
 
                     final Path mask = getMaskPath(adaptiveIcon, normalizationScale);
                     mFgImageView = setupImageView(adaptiveIcon.getForeground(), normalizationScale);
diff --git a/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java b/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java
index 29f738b..5858e13 100644
--- a/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java
+++ b/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java
@@ -47,11 +47,8 @@
     }
 
     private int getCount(SQLiteDatabase db, String sql) {
-        Cursor c = db.rawQuery(sql, null);
-        try {
+        try (Cursor c = db.rawQuery(sql, null)) {
             return c.getCount();
-        } finally {
-            c.getCount();
         }
     }
 
@@ -59,7 +56,7 @@
 
         private final long mProfileId;
 
-        public MyDatabaseHelper(long profileId) {
+        MyDatabaseHelper(long profileId) {
             super(getContext(), null, null);
             mProfileId = profileId;
         }