Merge "Send bubble bar bounds in display coordinates to wmshell" into main
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java
index 3fb7247..5819bb3 100644
--- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarController.java
@@ -46,6 +46,8 @@
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Path;
+import android.graphics.Point;
+import android.graphics.Rect;
import android.graphics.drawable.AdaptiveIconDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
@@ -66,6 +68,7 @@
import com.android.launcher3.icons.BubbleIconFactory;
import com.android.launcher3.shortcuts.ShortcutRequest;
import com.android.launcher3.taskbar.TaskbarControllers;
+import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.Executors.SimpleThreadFactory;
import com.android.quickstep.SystemUiProxy;
import com.android.wm.shell.bubbles.IBubblesListener;
@@ -408,8 +411,7 @@
info.getFlags() | Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION);
mSelectedBubble.getView().updateDotVisibility(true /* animate */);
}
- mSystemUiProxy.showBubble(getSelectedBubbleKey(),
- getBubbleBarOffsetX(), getBubbleBarOffsetY());
+ mSystemUiProxy.showBubble(getSelectedBubbleKey(), getExpandedBubbleBarDisplayBounds());
} else {
Log.w(TAG, "Trying to show the selected bubble but it's null");
}
@@ -577,12 +579,27 @@
return mIconFactory.createBadgedIconBitmap(drawable).icon;
}
- private int getBubbleBarOffsetY() {
+ /**
+ * Get bounds of the bubble bar as if it would be expanded.
+ * Calculates the bounds instead of retrieving current view location as the view may be
+ * animating.
+ */
+ private Rect getExpandedBubbleBarDisplayBounds() {
+ Point displaySize = DisplayController.INSTANCE.get(mContext).getInfo().currentSize;
+ Rect currentBarBounds = mBarView.getBubbleBarBounds();
+ Rect location = new Rect();
+ // currentBarBounds is only useful for distance from left or right edge.
+ // It contains the current bounds, calculate the expanded bounds.
+ if (mBarView.isOnLeft()) {
+ location.left = currentBarBounds.left;
+ location.right = (int) (currentBarBounds.left + mBarView.expandedWidth());
+ } else {
+ location.left = (int) (currentBarBounds.right - mBarView.expandedWidth());
+ location.right = currentBarBounds.right;
+ }
final int translation = (int) abs(mBubbleStashController.getBubbleBarTranslationY());
- return translation + mBarView.getHeight();
- }
-
- private int getBubbleBarOffsetX() {
- return mBarView.getWidth() + mBarView.getHorizontalMargin();
+ location.top = displaySize.y - mBarView.getHeight() - translation;
+ location.bottom = displaySize.y - translation;
+ return location;
}
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
index fbc7da1..8f693a6 100644
--- a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
+++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java
@@ -205,7 +205,10 @@
mRelativePivotX = onLeft ? 0f : 1f;
}
- private boolean isOnLeft() {
+ /**
+ * @return <code>true</code> when bar is pinned to the left edge of the screen
+ */
+ public boolean isOnLeft() {
return getLayoutDirection() == LAYOUT_DIRECTION_RTL;
}
@@ -509,7 +512,12 @@
return mIsBarExpanded;
}
- private float expandedWidth() {
+ /**
+ * Get width of the bubble bar as if it would be expanded.
+ *
+ * @return width of the bubble bar in its expanded state, regardless of current width
+ */
+ public float expandedWidth() {
final int childCount = getChildCount();
final int horizontalPadding = getPaddingStart() + getPaddingEnd();
return childCount * (mIconSize + mIconSpacing) + horizontalPadding;
diff --git a/quickstep/src/com/android/quickstep/SystemUiProxy.java b/quickstep/src/com/android/quickstep/SystemUiProxy.java
index 56a4024..52f9d8d 100644
--- a/quickstep/src/com/android/quickstep/SystemUiProxy.java
+++ b/quickstep/src/com/android/quickstep/SystemUiProxy.java
@@ -731,15 +731,12 @@
/**
* Tells SysUI to show the bubble with the provided key.
* @param key the key of the bubble to show.
- * @param bubbleBarOffsetX the offset of the bubble bar from the edge of the screen on the X
- * axis.
- * @param bubbleBarOffsetY the offset of the bubble bar from the edge of the screen on the Y
- * axis.
+ * @param bubbleBarBounds bounds of the bubble bar in display coordinates
*/
- public void showBubble(String key, int bubbleBarOffsetX, int bubbleBarOffsetY) {
+ public void showBubble(String key, Rect bubbleBarBounds) {
if (mBubbles != null) {
try {
- mBubbles.showBubble(key, bubbleBarOffsetX, bubbleBarOffsetY);
+ mBubbles.showBubble(key, bubbleBarBounds);
} catch (RemoteException e) {
Log.w(TAG, "Failed call showBubble");
}