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

Commit a354c4f1 authored by Yura's avatar Yura
Browse files

Fix for endless loop in RelativeLayout.

  getRelatedView(int[] rules, int relation)

is stuck in the loop, when a view is GONE, and references itself.
There is already a check in:

  getSortedViews(View[] sorted, int... rules) {

to make sure there are no loops of ViewA -> ViewB -> ViewA

BUT, there was a change made in findRoots(int[] rulesFilter)

to "Remove exception throw when a view has a self dependency
inside a RelativeLayout." so this means we must allow this case.

Other change git commit sha: da3003e1

Bug: http://b/android.com/231353
Change-Id: Icc26b86ebbb19e482c3afe6a39db996ec493586d
parent fda076a1
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1013,7 +1013,8 @@ public class RelativeLayout extends ViewGroup {
            while (v.getVisibility() == View.GONE) {
                rules = ((LayoutParams) v.getLayoutParams()).getRules(v.getLayoutDirection());
                node = mGraph.mKeyNodes.get((rules[relation]));
                if (node == null) return null;
                // ignore self dependency. for more info look in git commit: da3003
                if (node == null || v == node.view) return null;
                v = node.view;
            }