mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-03 22:48:25 +08:00
Fix a bug with comment box positioning.
Summary: We do want to only apply updates when a view previously wasn't mounted and didn't have a backing view created. Previously we were applying updates to the view regardless of the mount state, which resulted in positioning bugs. Rather than revert, I cleaned up the code Ahmed fixed, since didUpdate || ensureBackingViewIsCreated() was both a bug and obscure, as the two should have a swapped order. Reviewed By: sriramramani Differential Revision: D3538734
This commit is contained in:
committed by
Ahmed El-Helw
parent
7562f9d6f5
commit
e674185ea1
@@ -224,10 +224,14 @@ public class FlatUIImplementation extends UIImplementation {
|
||||
callback);
|
||||
}
|
||||
|
||||
private void ensureMountsToViewAndBackingViewIsCreated(int reactTag) {
|
||||
private boolean ensureMountsToViewAndBackingViewIsCreated(int reactTag) {
|
||||
FlatShadowNode node = (FlatShadowNode) resolveShadowNode(reactTag);
|
||||
if (node.isBackingViewCreated()) {
|
||||
return false;
|
||||
}
|
||||
node.forceMountToView();
|
||||
mStateBuilder.ensureBackingViewIsCreated(node);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -249,8 +253,15 @@ public class FlatUIImplementation extends UIImplementation {
|
||||
|
||||
@Override
|
||||
public void dispatchViewManagerCommand(int reactTag, int commandId, ReadableArray commandArgs) {
|
||||
ensureMountsToViewAndBackingViewIsCreated(reactTag);
|
||||
mStateBuilder.applyUpdates((FlatShadowNode) resolveShadowNode(reactTag));
|
||||
if (ensureMountsToViewAndBackingViewIsCreated(reactTag)) {
|
||||
// need to make sure any ui operations (UpdateViewGroup, for example, etc) have already
|
||||
// happened before we actually dispatch the view manager command (since otherwise, the command
|
||||
// may go to an empty shell parent without its children, which is against the specs). note
|
||||
// that we only want to applyUpdates if the view has not yet been created so that it does
|
||||
// get created (otherwise, we may end up changing the View's position when we're not supposed
|
||||
// to, for example).
|
||||
mStateBuilder.applyUpdates((FlatShadowNode) resolveShadowNode(reactTag));
|
||||
}
|
||||
super.dispatchViewManagerCommand(reactTag, commandId, commandArgs);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user