Skip to content

Commit 4cd4b4b

Browse files
Yann Pringaultgrabbou
authored andcommitted
Call handleUpdateLayout even if the content didn't change
Summary: This PR fixes #11096. I don't know enough the ReactAndroid's source code so I don't know if this is correct but I hope it is. In a recent commit (d4b8ae7), the `dispatchUpdates` method now returns a boolean to dispatch or not the `onLayout` event. This works well but if the content is unchanged, the line `nativeViewHierarchyOptimizer.handleUpdateLayout(this);` is never called. I don't know if it was intended but it was this which introduces my issue. I called this again even if the content didn't change. This was the behaviour before 0.38 so I guess I didn't break anything. **Test plan (required)** I tested my pretty big app with this fix and every screen is ok. Closes #11222 Differential Revision: D4252101 Pulled By: astreet fbshipit-source-id: 551559234631ac37245a854d81ba568f0ddb02dd
1 parent daf4805 commit 4cd4b4b

1 file changed

Lines changed: 4 additions & 17 deletions

File tree

ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -274,23 +274,10 @@ public void onCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) {
274274
}
275275

276276
if (hasNewLayout()) {
277-
float newLeft = Math.round(absoluteX + getLayoutX());
278-
float newTop = Math.round(absoluteY + getLayoutY());
279-
float newRight = Math.round(absoluteX + getLayoutX() + getLayoutWidth());
280-
float newBottom = Math.round(absoluteY + getLayoutY() + getLayoutHeight());
281-
282-
if (newLeft == mAbsoluteLeft &&
283-
newRight == mAbsoluteRight &&
284-
newTop == mAbsoluteTop &&
285-
newBottom == mAbsoluteBottom) {
286-
return false;
287-
}
288-
289-
mAbsoluteLeft = newLeft;
290-
mAbsoluteTop = newTop;
291-
mAbsoluteRight = newRight;
292-
mAbsoluteBottom = newBottom;
293-
277+
mAbsoluteLeft = Math.round(absoluteX + getLayoutX());
278+
mAbsoluteTop = Math.round(absoluteY + getLayoutY());
279+
mAbsoluteRight = Math.round(absoluteX + getLayoutX() + getLayoutWidth());
280+
mAbsoluteBottom = Math.round(absoluteY + getLayoutY() + getLayoutHeight());
294281
nativeViewHierarchyOptimizer.handleUpdateLayout(this);
295282
return true;
296283
} else {

0 commit comments

Comments
 (0)