Skip to content

Commit 0b22b95

Browse files
Thomas Nardonefacebook-github-bot
authored andcommitted
ReactViewGroup - utilize onViewAdded/Removed (#47890)
Summary: Pull Request resolved: #47890 The fix in [#40859](#40859) overrode every possible add or remove to ensure completeness, but all paths should also call onViewAdded/onViewRemoved via: - `addView`/`addViewInLayout` -> [addViewInner](https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-15.0.0_r5/core/java/android/view/ViewGroup.java#5310) - `removeView`/`removeViewInLayout` -> [removeViewInternal](https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-15.0.0_r5/core/java/android/view/ViewGroup.java#5606) - `removeViews`/`removeViewsInLayout` -> [removeViewsInternal](https://android.googlesource.com/platform/frameworks/base/+/refs/tags/android-15.0.0_r5/core/java/android/view/ViewGroup.java#5714) Changelog: [Android][Changed] Consolidated ReactViewGroup add/remove overrides Reviewed By: javache Differential Revision: D66320586 fbshipit-source-id: aaf16af5ad87789f575fcb79dcf31f5686002b2d
1 parent 3d1a505 commit 0b22b95

File tree

2 files changed

+11
-66
lines changed

2 files changed

+11
-66
lines changed

packages/react-native/ReactAndroid/api/ReactAndroid.api

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7823,8 +7823,6 @@ public class com/facebook/react/views/view/ReactDrawableHelper {
78237823

78247824
public class com/facebook/react/views/view/ReactViewGroup : android/view/ViewGroup, com/facebook/react/touch/ReactHitSlopView, com/facebook/react/touch/ReactInterceptingViewGroup, com/facebook/react/uimanager/ReactClippingViewGroup, com/facebook/react/uimanager/ReactOverflowViewWithInset, com/facebook/react/uimanager/ReactPointerEventsView, com/facebook/react/uimanager/ReactZIndexedViewGroup {
78257825
public fun <init> (Landroid/content/Context;)V
7826-
public fun addView (Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
7827-
protected fun addViewInLayout (Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)Z
78287826
protected fun dispatchDraw (Landroid/graphics/Canvas;)V
78297827
public fun dispatchGenericMotionEvent (Landroid/view/MotionEvent;)Z
78307828
public fun dispatchProvideStructure (Landroid/view/ViewStructure;)V
@@ -7847,11 +7845,8 @@ public class com/facebook/react/views/view/ReactViewGroup : android/view/ViewGro
78477845
protected fun onMeasure (II)V
78487846
protected fun onSizeChanged (IIII)V
78497847
public fun onTouchEvent (Landroid/view/MotionEvent;)Z
7850-
public fun removeView (Landroid/view/View;)V
7851-
public fun removeViewAt (I)V
7852-
public fun removeViewInLayout (Landroid/view/View;)V
7853-
public fun removeViews (II)V
7854-
public fun removeViewsInLayout (II)V
7848+
public fun onViewAdded (Landroid/view/View;)V
7849+
public fun onViewRemoved (Landroid/view/View;)V
78557850
public fun requestLayout ()V
78567851
public fun setBackfaceVisibility (Ljava/lang/String;)V
78577852
public fun setBackfaceVisibilityDependantOpacity ()V

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewGroup.java

Lines changed: 9 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -524,83 +524,33 @@ private boolean customDrawOrderDisabled() {
524524
return ViewUtil.getUIManagerType(getId()) == UIManagerType.FABRIC;
525525
}
526526

527-
private void handleAddView(View view) {
527+
@Override
528+
public void onViewAdded(View child) {
528529
UiThreadUtil.assertOnUiThread();
529530

530531
if (!customDrawOrderDisabled()) {
531-
getDrawingOrderHelper().handleAddView(view);
532+
getDrawingOrderHelper().handleAddView(child);
532533
setChildrenDrawingOrderEnabled(getDrawingOrderHelper().shouldEnableCustomDrawingOrder());
533534
} else {
534535
setChildrenDrawingOrderEnabled(false);
535536
}
537+
super.onViewAdded(child);
536538
}
537539

538-
private void handleRemoveView(@Nullable View view) {
540+
@Override
541+
public void onViewRemoved(View child) {
539542
UiThreadUtil.assertOnUiThread();
540543

541544
if (!customDrawOrderDisabled()) {
542-
if (indexOfChild(view) == -1) {
545+
if (indexOfChild(child) == -1) {
543546
return;
544547
}
545-
getDrawingOrderHelper().handleRemoveView(view);
548+
getDrawingOrderHelper().handleRemoveView(child);
546549
setChildrenDrawingOrderEnabled(getDrawingOrderHelper().shouldEnableCustomDrawingOrder());
547550
} else {
548551
setChildrenDrawingOrderEnabled(false);
549552
}
550-
}
551-
552-
private void handleRemoveViews(int start, int count) {
553-
int endIndex = start + count;
554-
for (int index = start; index < endIndex; index++) {
555-
if (index < getChildCount()) {
556-
handleRemoveView(getChildAt(index));
557-
}
558-
}
559-
}
560-
561-
@Override
562-
public void addView(View child, int index, @Nullable ViewGroup.LayoutParams params) {
563-
// This will get called for every overload of addView so there is not need to override every
564-
// method.
565-
handleAddView(child);
566-
super.addView(child, index, params);
567-
}
568-
569-
@Override
570-
protected boolean addViewInLayout(
571-
View child, int index, LayoutParams params, boolean preventRequestLayout) {
572-
handleAddView(child);
573-
return super.addViewInLayout(child, index, params, preventRequestLayout);
574-
}
575-
576-
@Override
577-
public void removeView(@Nullable View view) {
578-
handleRemoveView(view);
579-
super.removeView(view);
580-
}
581-
582-
@Override
583-
public void removeViewAt(int index) {
584-
handleRemoveView(getChildAt(index));
585-
super.removeViewAt(index);
586-
}
587-
588-
@Override
589-
public void removeViewInLayout(View view) {
590-
handleRemoveView(view);
591-
super.removeViewInLayout(view);
592-
}
593-
594-
@Override
595-
public void removeViewsInLayout(int start, int count) {
596-
handleRemoveViews(start, count);
597-
super.removeViewsInLayout(start, count);
598-
}
599-
600-
@Override
601-
public void removeViews(int start, int count) {
602-
handleRemoveViews(start, count);
603-
super.removeViews(start, count);
553+
super.onViewRemoved(child);
604554
}
605555

606556
@Override

0 commit comments

Comments
 (0)