Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2b635eeb authored by Matvei Malkov's avatar Matvei Malkov Committed by Android (Google) Code Review
Browse files

Merge "Changes in PopupWindow API"

parents 5d4f5ebf 3085300f
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -56297,6 +56297,7 @@ package android.widget {
    method public android.view.View getContentView();
    method public float getElevation();
    method @Nullable public android.transition.Transition getEnterTransition();
    method @Nullable public android.graphics.Rect getEpicenterBounds();
    method @Nullable public android.transition.Transition getExitTransition();
    method public int getHeight();
    method public int getInputMethodMode();
@@ -56309,30 +56310,37 @@ package android.widget {
    method public int getWindowLayoutType();
    method public boolean isAboveAnchor();
    method public boolean isAttachedInDecor();
    method public boolean isClipToScreenEnabled();
    method public boolean isClippingEnabled();
    method public boolean isFocusable();
    method public boolean isLayoutInScreenEnabled();
    method public boolean isOutsideTouchable();
    method public boolean isShowing();
    method public boolean isSplitTouchEnabled();
    method public boolean isTouchModal();
    method public boolean isTouchable();
    method public void setAnimationStyle(int);
    method public void setAttachedInDecor(boolean);
    method public void setBackgroundDrawable(android.graphics.drawable.Drawable);
    method public void setClipToScreenEnabled(boolean);
    method public void setClippingEnabled(boolean);
    method public void setContentView(android.view.View);
    method public void setElevation(float);
    method public void setEnterTransition(@Nullable android.transition.Transition);
    method public void setEpicenterBounds(@Nullable android.graphics.Rect);
    method public void setExitTransition(@Nullable android.transition.Transition);
    method public void setFocusable(boolean);
    method public void setHeight(int);
    method public void setIgnoreCheekPress();
    method public void setInputMethodMode(int);
    method public void setLayoutInScreenEnabled(boolean);
    method public void setOnDismissListener(android.widget.PopupWindow.OnDismissListener);
    method public void setOutsideTouchable(boolean);
    method public void setOverlapAnchor(boolean);
    method public void setSoftInputMode(int);
    method public void setSplitTouchEnabled(boolean);
    method public void setTouchInterceptor(android.view.View.OnTouchListener);
    method public void setTouchModal(boolean);
    method public void setTouchable(boolean);
    method public void setWidth(int);
    method @Deprecated public void setWindowLayoutMode(int, int);
+79 −24
Original line number Diff line number Diff line
@@ -264,7 +264,7 @@ public class PopupWindow {
    private WeakReference<View> mAnchorRoot;
    private boolean mIsAnchorRootAttached;

    @UnsupportedAppUsage
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
    private final OnScrollChangedListener mOnScrollChangedListener = this::alignToAnchor;

    private final View.OnLayoutChangeListener mOnLayoutChangeListener =
@@ -476,22 +476,39 @@ public class PopupWindow {
    }

    /**
     * Sets the bounds used as the epicenter of the enter and exit transitions.
     * <p>
     * Transitions use a point or Rect, referred to as the epicenter, to orient
     * <p>Returns bounds which are used as a center of the enter and exit transitions.<p/>
     *
     * <p>Transitions use Rect, referred to as the epicenter, to orient
     * the direction of travel. For popup windows, the anchor view bounds are
     * used as the default epicenter.
     * <p>
     * See {@link Transition#setEpicenterCallback(EpicenterCallback)} for more
     * information about how transition epicenters.
     * used as the default epicenter.</p>
     *
     * <p>See {@link Transition#setEpicenterCallback(EpicenterCallback)} for more
     * information about how transition epicenters work.</p>
     *
     * @return bounds relative to anchor view, or {@code null} if not set
     * @see #setEpicenterBounds(Rect)
     */
    @Nullable
    public Rect getEpicenterBounds() {
        return mEpicenterBounds;
    }

    /**
     * <p>Sets the bounds used as the epicenter of the enter and exit transitions.</p>
     *
     * <p>Transitions use Rect, referred to as the epicenter, to orient
     * the direction of travel. For popup windows, the anchor view bounds are
     * used as the default epicenter.</p>
     *
     * <p>See {@link Transition#setEpicenterCallback(EpicenterCallback)} for more
     * information about how transition epicenters work.</p>
     *
     * @param bounds the epicenter bounds relative to the anchor view, or
     *               {@code null} to use the default epicenter
     * @see #getTransitionEpicenter()
     * @hide
     *
     * @see #getEpicenterBounds()
     */
    @UnsupportedAppUsage
    public void setEpicenterBounds(Rect bounds) {
    public void setEpicenterBounds(@Nullable Rect bounds) {
        mEpicenterBounds = bounds;
    }

@@ -865,12 +882,28 @@ public class PopupWindow {
    }

    /**
     * Clip this popup window to the screen, but not to the containing window.
     * <p>Indicates whether this popup will be clipped to the screen and not to the
     * containing window<p/>
     *
     * @param enabled True to clip to the screen.
     * @hide
     * @return true if popup will be clipped to the screen instead of the window, false otherwise
     *
     * @see #setClipToScreenEnabled(boolean)
     */
    public boolean isClipToScreenEnabled() {
        return mClipToScreen;
    }

    /**
     * <p>Clip this popup window to the screen, but not to the containing window.</p>
     *
     * <p>If the popup is showing, calling this method will take effect only
     * the next time the popup is shown or through a manual call to one of
     * the {@link #update()} methods.</p>
     *
     * @param enabled true to clip to the screen.
     *
     * @see #isClipToScreenEnabled()
     */
    @UnsupportedAppUsage
    public void setClipToScreenEnabled(boolean enabled) {
        mClipToScreen = enabled;
    }
@@ -927,7 +960,8 @@ public class PopupWindow {
     * for positioning.</p>
     *
     * @return true if the window will always be positioned in screen coordinates.
     * @hide
     *
     * @see #setLayoutInScreenEnabled(boolean)
     */
    public boolean isLayoutInScreenEnabled() {
        return mLayoutInScreen;
@@ -939,9 +973,9 @@ public class PopupWindow {
     * This will cause the popup to be positioned in absolute screen coordinates.</p>
     *
     * @param enabled true if the popup should always be positioned in screen coordinates
     * @hide
     *
     * @see #isLayoutInScreenEnabled()
     */
    @UnsupportedAppUsage
    public void setLayoutInScreenEnabled(boolean enabled) {
        mLayoutInScreen = enabled;
    }
@@ -1021,11 +1055,30 @@ public class PopupWindow {
    }

    /**
     * Set whether this window is touch modal or if outside touches will be sent to
     * other windows behind it.
     * @hide
     * <p>Indicates whether outside touches will be sent to this window
     * or other windows behind it<p/>
     *
     * @return true if touches will be sent to this window, false otherwise
     *
     * @see #setTouchModal(boolean)
     */
    public boolean isTouchModal() {
        return !mNotTouchModal;
    }

    /**
     * <p>Set whether this window is touch modal or if outside touches will be sent to
     * other windows behind it.<p/>
     *
     * <p>If the popup is showing, calling this method will take effect only
     * the next time the popup is shown or through a manual call to one of
     * the {@link #update()} methods.</p>
     *
     * @param touchModal true to sent all outside touches to this window,
     * false to other windows behind it
     *
     * @see #isTouchModal()
     */
    @UnsupportedAppUsage
    public void setTouchModal(boolean touchModal) {
        mNotTouchModal = !touchModal;
    }
@@ -1454,7 +1507,7 @@ public class PopupWindow {
     *
     * @param p the layout parameters of the popup's content view
     */
    @UnsupportedAppUsage
    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
    private void invokePopup(WindowManager.LayoutParams p) {
        if (mContext != null) {
            p.packageName = mContext.getPackageName();
@@ -2060,6 +2113,8 @@ public class PopupWindow {
     *     <li>{@link #setInputMethodMode(int)}</li>
     *     <li>{@link #setTouchable(boolean)}</li>
     *     <li>{@link #setAnimationStyle(int)}</li>
     *     <li>{@link #setTouchModal(boolean)} (boolean)}</li>
     *     <li>{@link #setClipToScreenEnabled(boolean)}</li>
     * </ul>
     */
    public void update() {