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

Commit defdb1e4 authored by Tobias Dubois's avatar Tobias Dubois Committed by Johan Redestig
Browse files

Add the possibility to modify the View focus rect

This change makes it possible for a view to supply a different rectangle than
the drawing rect to be used by the FocusFinder when finding a new view to give
focus to. This is useful if e.g. the total view area is larger than the
interactive area of the view.

The default implementation of getFocusRect() will return  getDrawingRect().
The existing behaviour is only changed if getFocusRect() is overridden by a
subclass of android.view.View

Change-Id: I52dd95c6fa296b744e354217051dcec1bb3c8e92
parent 0748a569
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -23033,6 +23033,7 @@ package android.view {
    method public void getDrawingRect(android.graphics.Rect);
    method public long getDrawingTime();
    method public boolean getFilterTouchesWhenObscured();
    method public void getFocusRect(android.graphics.Rect);
    method public java.util.ArrayList<android.view.View> getFocusables(int);
    method public void getFocusedRect(android.graphics.Rect);
    method public boolean getGlobalVisibleRect(android.graphics.Rect, android.graphics.Point);
+2 −2
Original line number Diff line number Diff line
@@ -181,8 +181,8 @@ public class FocusFinder {
            // only interested in other non-root views
            if (focusable == focused || focusable == root) continue;

            // get visible bounds of other view in same coordinate system
            focusable.getDrawingRect(mOtherRect);
            // get focus bounds of other view in same coordinate system
            focusable.getFocusRect(mOtherRect);
            root.offsetDescendantRectToMyCoords(focusable, mOtherRect);

            if (isBetterCandidate(direction, focusedRect, mOtherRect, mBestCandidateRect)) {
+12 −0
Original line number Diff line number Diff line
@@ -7128,6 +7128,18 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
        }
    }
    /**
     * When searching for a view to focus this rectangle is used when considering if this view is
     * a good candidate for receiving focus.
     *
     * By default, the rectangle is the {@link #getDrawingRect}) of the view.
     *
     * @param r The rectangle to fill in, in this view's coordinates.
     */
    public void getFocusRect(Rect r) {
        getDrawingRect(r);
    }
   /**
     * Utility method to retrieve the inverse of the current mMatrix property.
     * We cache the matrix to avoid recalculating it when transform properties