View.requestLayout(): avoid recursion

Calling this method recursively can confuse Views that overwrite it.
This commit is contained in:
Julian Winkler
2025-10-22 12:37:10 +02:00
parent 7941a04ab3
commit 377c140d7c

View File

@@ -1536,11 +1536,15 @@ public class View implements Drawable.Callback {
public boolean removeCallbacks(Runnable action) {return false;} public boolean removeCallbacks(Runnable action) {return false;}
public void requestLayout() { public void requestLayout() {
layoutRequested = true;
if (parent instanceof View && !parent.isLayoutRequested()) {
((View)parent).requestLayout();
}
native_requestLayout(widget); native_requestLayout(widget);
View view = this;
while (!view.layoutRequested) {
view.layoutRequested = true;
if (view.parent instanceof View)
view = (View)view.parent;
else
break;
}
}; };
public void setOverScrollMode(int mode) {} public void setOverScrollMode(int mode) {}