mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
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 (https://github.com/facebook/react-native/commit/d4b8ae7a8a3de314b5813e0bfcdf5fb265129d43), 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 https://github.com/facebook/react-native/pull/11222 Differential Revision: D4252101 Pulled By: astreet fbshipit-source-id: 551559234631ac37245a854d81ba568f0ddb02dd
This commit is contained in:
committed by
Facebook Github Bot
parent
b1fd7bd641
commit
fb230000a8
@@ -286,23 +286,10 @@ public class ReactShadowNode {
|
||||
}
|
||||
|
||||
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 {
|
||||
|
||||
Reference in New Issue
Block a user