From 377c140d7c4ff2ef229dbdf742723d77038058e8 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Wed, 22 Oct 2025 12:37:10 +0200 Subject: [PATCH] View.requestLayout(): avoid recursion Calling this method recursively can confuse Views that overwrite it. --- src/api-impl/android/view/View.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/api-impl/android/view/View.java b/src/api-impl/android/view/View.java index 79bd661a..3b378012 100644 --- a/src/api-impl/android/view/View.java +++ b/src/api-impl/android/view/View.java @@ -1536,11 +1536,15 @@ public class View implements Drawable.Callback { public boolean removeCallbacks(Runnable action) {return false;} public void requestLayout() { - layoutRequested = true; - if (parent instanceof View && !parent.isLayoutRequested()) { - ((View)parent).requestLayout(); - } 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) {}