Permalink
Browse files

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
  • Loading branch information...
1 parent b1fd7bd commit fb230000a8d70fbc1e4c6ccfd9470de838554371 @Kerumen Kerumen committed with Facebook Github Bot Nov 30, 2016
Showing with 4 additions and 17 deletions.
  1. +4 −17 ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNode.java
@@ -286,23 +286,10 @@ public void onCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) {
}
if (hasNewLayout()) {
- float newLeft = Math.round(absoluteX + getLayoutX());
- float newTop = Math.round(absoluteY + getLayoutY());
- float newRight = Math.round(absoluteX + getLayoutX() + getLayoutWidth());
- float newBottom = Math.round(absoluteY + getLayoutY() + getLayoutHeight());
-
- if (newLeft == mAbsoluteLeft &&
- newRight == mAbsoluteRight &&
- newTop == mAbsoluteTop &&
- newBottom == mAbsoluteBottom) {
- return false;
- }
-
- mAbsoluteLeft = newLeft;
- mAbsoluteTop = newTop;
- mAbsoluteRight = newRight;
- mAbsoluteBottom = newBottom;
-
+ mAbsoluteLeft = Math.round(absoluteX + getLayoutX());
+ mAbsoluteTop = Math.round(absoluteY + getLayoutY());
+ mAbsoluteRight = Math.round(absoluteX + getLayoutX() + getLayoutWidth());
+ mAbsoluteBottom = Math.round(absoluteY + getLayoutY() + getLayoutHeight());
nativeViewHierarchyOptimizer.handleUpdateLayout(this);
return true;
} else {

0 comments on commit fb23000

Please sign in to comment.