Fixing issue where widgets could be inflated in wrong orientation (issue 6584646)
Change-Id: I24ea7f59345e8f62daf36c13cb43e1ab0180e805
diff --git a/src/com/android/launcher2/LauncherAppWidgetHostView.java b/src/com/android/launcher2/LauncherAppWidgetHostView.java
index e34196e..9970c76 100644
--- a/src/com/android/launcher2/LauncherAppWidgetHostView.java
+++ b/src/com/android/launcher2/LauncherAppWidgetHostView.java
@@ -18,10 +18,14 @@
import android.appwidget.AppWidgetHostView;
import android.content.Context;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.os.Parcel;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.RemoteViews;
import com.android.launcher.R;
@@ -31,9 +35,12 @@
public class LauncherAppWidgetHostView extends AppWidgetHostView {
private CheckLongPressHelper mLongPressHelper;
private LayoutInflater mInflater;
+ private Context mContext;
+ private int mPreviousOrientation;
public LauncherAppWidgetHostView(Context context) {
super(context);
+ mContext = context;
mLongPressHelper = new CheckLongPressHelper(this);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@@ -43,6 +50,21 @@
return mInflater.inflate(R.layout.appwidget_error, this, false);
}
+ @Override
+ public void updateAppWidget(RemoteViews remoteViews) {
+ // Store the orientation in which the widget was inflated
+ mPreviousOrientation = mContext.getResources().getConfiguration().orientation;
+ super.updateAppWidget(remoteViews);
+ }
+
+ public boolean orientationChangedSincedInflation() {
+ int orientation = mContext.getResources().getConfiguration().orientation;
+ if (mPreviousOrientation != orientation) {
+ return true;
+ }
+ return false;
+ }
+
public boolean onInterceptTouchEvent(MotionEvent ev) {
// Consume any touch events for ourselves after longpress is triggered
if (mLongPressHelper.hasPerformedLongPress()) {