Merge "Fixing widgets get deteled because of double bind" into ub-launcher3-master
diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java
index 7209d9d..5ac53a8 100644
--- a/src/com/android/launcher3/Launcher.java
+++ b/src/com/android/launcher3/Launcher.java
@@ -2239,6 +2239,7 @@
         // Clear the workspace because it's going to be rebound
         mWorkspace.clearDropTargets();
         mWorkspace.removeAllWorkspaceScreens();
+        mAppWidgetHost.clearViews();
 
         if (mHotseat != null) {
             mHotseat.resetLayout();
diff --git a/src/com/android/launcher3/LauncherAppWidgetHost.java b/src/com/android/launcher3/LauncherAppWidgetHost.java
index 7bc7139..56671a1 100644
--- a/src/com/android/launcher3/LauncherAppWidgetHost.java
+++ b/src/com/android/launcher3/LauncherAppWidgetHost.java
@@ -236,7 +236,7 @@
     }
 
     @Override
-    protected void clearViews() {
+    public void clearViews() {
         super.clearViews();
         mViews.clear();
     }
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
index 0b1474a..9d74218 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetHostView.java
@@ -488,13 +488,14 @@
         // Only reinflate when the final configuration is same as the required configuration
         if (mReinflateOnConfigChange && isSameOrientation()) {
             mReinflateOnConfigChange = false;
-            if (isAttachedToWindow()) {
-                reInflate();
-            }
+            reInflate();
         }
     }
 
     public void reInflate() {
+        if (!isAttachedToWindow()) {
+            return;
+        }
         LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) getTag();
         // Remove and rebind the current widget (which was inflated in the wrong
         // orientation), but don't delete it from the database