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

Commit 87980f9a authored by Alan Viverette's avatar Alan Viverette
Browse files

Adds hotspot support to LayerDrawable and InsetDrawable

Change-Id: Id17f460c8e4e0a6bf9fd39a4a7b8c79fa2df8d29
parent e6875f15
Loading
Loading
Loading
Loading
+32 −0
Original line number Diff line number Diff line
@@ -182,6 +182,38 @@ public class InsetDrawable extends Drawable implements Drawable.Callback
        }
    }

    /**
     * @hide
     */
    @Override
    public boolean supportsHotspots() {
        return mInsetState.mDrawable.supportsHotspots();
    }

    /**
     * @hide
     */
    @Override
    public void setHotspot(int id, float x, float y) {
        mInsetState.mDrawable.setHotspot(id, x, y);
    }

    /**
     * @hide
     */
    @Override
    public void removeHotspot(int id) {
        mInsetState.mDrawable.removeHotspot(id);
    }

    /**
     * @hide
     */
    @Override
    public void clearHotspots() {
        mInsetState.mDrawable.clearHotspots();
    }

    @Override
    public boolean setVisible(boolean visible, boolean restart) {
        mInsetState.mDrawable.setVisible(visible, restart);
+52 −0
Original line number Diff line number Diff line
@@ -423,6 +423,58 @@ public class LayerDrawable extends Drawable implements Drawable.Callback {
        }
    }

    /**
     * @hide
     */
    @Override
    public boolean supportsHotspots() {
        final ChildDrawable[] array = mLayerState.mChildren;
        final int N = mLayerState.mNum;
        for (int i = 0; i < N; i++) {
            if (array[i].mDrawable.supportsHotspots()) {
                return true;
            }
        }

        return false;
    }

    /**
     * @hide
     */
    @Override
    public void setHotspot(int id, float x, float y) {
        final ChildDrawable[] array = mLayerState.mChildren;
        final int N = mLayerState.mNum;
        for (int i = 0; i < N; i++) {
            array[i].mDrawable.setHotspot(id, x, y);
        }
    }

    /**
     * @hide
     */
    @Override
    public void removeHotspot(int id) {
        final ChildDrawable[] array = mLayerState.mChildren;
        final int N = mLayerState.mNum;
        for (int i = 0; i < N; i++) {
            array[i].mDrawable.removeHotspot(id);
        }
    }

    /**
     * @hide
     */
    @Override
    public void clearHotspots() {
        final ChildDrawable[] array = mLayerState.mChildren;
        final int N = mLayerState.mNum;
        for (int i = 0; i < N; i++) {
            array[i].mDrawable.clearHotspots();
        }
    }

    private void computeStackedPadding(Rect padding) {
        padding.left = 0;
        padding.top = 0;