Merge "Removing support for fake landscape" into ub-launcher3-master
diff --git a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java
index 593b695..aeb718d 100644
--- a/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java
+++ b/quickstep/src/com/android/quickstep/interaction/BackGestureTutorialFragment.java
@@ -107,11 +107,11 @@
}
void onAttachedToWindow() {
- mEdgeBackGestureHandler.setIsEnabled(true);
+ mEdgeBackGestureHandler.setViewGroupParent((ViewGroup) getRootView());
}
void onDetachedFromWindow() {
- mEdgeBackGestureHandler.setIsEnabled(false);
+ mEdgeBackGestureHandler.setViewGroupParent(null);
}
@Override
diff --git a/quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java b/quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java
index 04cd2f4..f34530e 100644
--- a/quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java
+++ b/quickstep/src/com/android/quickstep/interaction/EdgeBackGestureHandler.java
@@ -17,21 +17,18 @@
import android.content.Context;
import android.content.res.Resources;
-import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.PointF;
-import android.hardware.display.DisplayManager;
-import android.hardware.display.DisplayManager.DisplayListener;
-import android.os.Handler;
-import android.os.Looper;
import android.os.SystemProperties;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewConfiguration;
-import android.view.WindowManager;
-import android.view.WindowManager.LayoutParams;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
+
+import androidx.annotation.Nullable;
import com.android.launcher3.ResourceUtils;
@@ -40,7 +37,7 @@
*
* Forked from platform/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java.
*/
-public class EdgeBackGestureHandler implements DisplayListener, OnTouchListener {
+public class EdgeBackGestureHandler implements OnTouchListener {
private static final String TAG = "EdgeBackGestureHandler";
private static final int MAX_LONG_PRESS_TIMEOUT = SystemProperties.getInt(
@@ -106,29 +103,22 @@
mEdgeWidth = ResourceUtils.getNavbarSize("config_backGestureInset", res);
}
- void setIsEnabled(boolean isEnabled) {
- if (isEnabled == mIsEnabled) {
- return;
- }
- mIsEnabled = isEnabled;
+ void setViewGroupParent(@Nullable ViewGroup parent) {
+ mIsEnabled = parent != null;
if (mEdgeBackPanel != null) {
mEdgeBackPanel.onDestroy();
mEdgeBackPanel = null;
}
- if (!mIsEnabled) {
- mContext.getSystemService(DisplayManager.class).unregisterDisplayListener(this);
- } else {
- updateDisplaySize();
- mContext.getSystemService(DisplayManager.class).registerDisplayListener(this,
- new Handler(Looper.getMainLooper()));
-
+ if (mIsEnabled) {
// Add a nav bar panel window.
- mEdgeBackPanel = new EdgeBackGesturePanel(mContext);
+ mEdgeBackPanel = new EdgeBackGesturePanel(mContext, parent, createLayoutParams());
mEdgeBackPanel.setBackCallback(mBackCallback);
- mEdgeBackPanel.setLayoutParams(createLayoutParams());
- updateDisplaySize();
+ if (mContext.getDisplay() != null) {
+ mContext.getDisplay().getRealSize(mDisplaySize);
+ mEdgeBackPanel.setDisplaySize(mDisplaySize);
+ }
}
}
@@ -136,21 +126,11 @@
mGestureCallback = callback;
}
- private WindowManager.LayoutParams createLayoutParams() {
+ private LayoutParams createLayoutParams() {
Resources resources = mContext.getResources();
- WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams(
+ return new LayoutParams(
ResourceUtils.getNavbarSize("navigation_edge_panel_width", resources),
- ResourceUtils.getNavbarSize("navigation_edge_panel_height", resources),
- LayoutParams.TYPE_APPLICATION_PANEL,
- WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
- | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
- | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH
- | WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN,
- PixelFormat.TRANSLUCENT);
- layoutParams.setTitle(TAG + mDisplayId);
- layoutParams.windowAnimations = 0;
- layoutParams.setFitInsetsTypes(0 /* types */);
- return layoutParams;
+ ResourceUtils.getNavbarSize("navigation_edge_panel_height", resources));
}
@Override
@@ -232,26 +212,6 @@
}
}
- @Override
- public void onDisplayAdded(int displayId) { }
-
- @Override
- public void onDisplayRemoved(int displayId) { }
-
- @Override
- public void onDisplayChanged(int displayId) {
- if (displayId == mDisplayId) {
- updateDisplaySize();
- }
- }
-
- private void updateDisplaySize() {
- mContext.getDisplay().getRealSize(mDisplaySize);
- if (mEdgeBackPanel != null) {
- mEdgeBackPanel.setDisplaySize(mDisplaySize);
- }
- }
-
void setInsets(int leftInset, int rightInset) {
mLeftInset = leftInset;
mRightInset = rightInset;
diff --git a/quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java b/quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java
index 34eeafc..5bf5026 100644
--- a/quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java
+++ b/quickstep/src/com/android/quickstep/interaction/EdgeBackGesturePanel.java
@@ -26,11 +26,11 @@
import android.graphics.Path;
import android.graphics.Point;
import android.os.SystemClock;
-import android.view.Gravity;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
-import android.view.WindowManager;
+import android.view.ViewGroup;
+import android.view.ViewGroup.LayoutParams;
import android.view.animation.Interpolator;
import android.view.animation.PathInterpolator;
@@ -110,7 +110,6 @@
private static final Interpolator RUBBER_BAND_INTERPOLATOR_APPEAR =
new PathInterpolator(1.0f / RUBBER_BAND_AMOUNT_APPEAR, 1.0f, 1.0f, 1.0f);
- private final WindowManager mWindowManager;
private BackCallback mBackCallback;
/**
@@ -147,7 +146,6 @@
private VelocityTracker mVelocityTracker;
private int mArrowPaddingEnd;
- private WindowManager.LayoutParams mLayoutParams;
/**
* True if the panel is currently on the left of the screen
@@ -232,11 +230,9 @@
}
};
- public EdgeBackGesturePanel(Context context) {
+ public EdgeBackGesturePanel(Context context, ViewGroup parent, LayoutParams layoutParams) {
super(context);
- mWindowManager = context.getSystemService(WindowManager.class);
-
mDensity = context.getResources().getDisplayMetrics().density;
mBaseTranslation = dp(BASE_TRANSLATION_DP);
@@ -290,11 +286,15 @@
mSwipeThreshold = ResourceUtils.getDimenByName(
"navigation_edge_action_drag_threshold", context.getResources(), 16 /* defaultValue */);
+ parent.addView(this, layoutParams);
setVisibility(GONE);
}
void onDestroy() {
- mWindowManager.removeView(this);
+ ViewGroup parent = (ViewGroup) getParent();
+ if (parent != null) {
+ parent.removeView(this);
+ }
}
@Override
@@ -305,9 +305,6 @@
@SuppressLint("RtlHardcoded")
void setIsLeftPanel(boolean isLeftPanel) {
mIsLeftPanel = isLeftPanel;
- mLayoutParams.gravity = mIsLeftPanel
- ? (Gravity.LEFT | Gravity.TOP)
- : (Gravity.RIGHT | Gravity.TOP);
}
boolean getIsLeftPanel() {
@@ -323,11 +320,6 @@
mBackCallback = callback;
}
- void setLayoutParams(WindowManager.LayoutParams layoutParams) {
- mLayoutParams = layoutParams;
- mWindowManager.addView(this, mLayoutParams);
- }
-
private float getCurrentAngle() {
return mCurrentAngle;
}
@@ -349,7 +341,6 @@
mStartY = event.getY();
setVisibility(VISIBLE);
updatePosition(event.getY());
- mWindowManager.updateViewLayout(this, mLayoutParams);
break;
case MotionEvent.ACTION_MOVE:
handleMoveEvent(event);
@@ -614,10 +605,11 @@
}
private void updatePosition(float touchY) {
- float position = touchY - mFingerOffset;
- position = Math.max(position, mMinArrowPosition);
- position -= mLayoutParams.height / 2.0f;
- mLayoutParams.y = MathUtils.clamp((int) position, 0, mDisplaySize.y);
+ float positionY = touchY - mFingerOffset;
+ positionY = Math.max(positionY, mMinArrowPosition);
+ positionY -= getLayoutParams().height / 2.0f;
+ setX(mIsLeftPanel ? 0 : mDisplaySize.x - getLayoutParams().width);
+ setY(MathUtils.clamp((int) positionY, 0, mDisplaySize.y));
}
private void setDesiredVerticalTransition(float verticalTranslation, boolean animated) {
diff --git a/src/com/android/launcher3/widget/WidgetsRecyclerView.java b/src/com/android/launcher3/widget/WidgetsRecyclerView.java
index 17baa27..7ec6214 100644
--- a/src/com/android/launcher3/widget/WidgetsRecyclerView.java
+++ b/src/com/android/launcher3/widget/WidgetsRecyclerView.java
@@ -209,4 +209,15 @@
}
super.stopNestedScroll();
}
+
+ @Override
+ public void setLayoutFrozen(boolean frozen) {
+ if (frozen != isLayoutSuppressed()) {
+ if (Utilities.IS_RUNNING_IN_TEST_HARNESS) {
+ Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "setLayoutFrozen " + frozen
+ + " @ " + android.util.Log.getStackTraceString(new Throwable()));
+ }
+ }
+ super.setLayoutFrozen(frozen);
+ }
}
\ No newline at end of file