From a05b409b385147cabdbd255dad04e39ee8f04411 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=9F=D1=91=D1=82=D1=80=20=D0=9F=D0=BE=D1=82=D0=B0=D0=BF?=
 =?UTF-8?q?=D0=BE=D0=B2?= <dr.potapoff.peter@gmail.com>
Date: Wed, 10 Apr 2019 06:41:12 -0700
Subject: [PATCH] Fix: specific border radius corner causes visual bug on other
 corners (#24390)

Summary:
Fixes #22511

I understand the motivation of adding extraRadiusForOutline to corner radius: without it there can be an empty space between border and view's background color.

So I add simple check: if corner radius is more than zero we still add extraRadiusForOutline. And if not, we don't add it to prevent all the corners to become slightly curved.

[GENERAL] [Fixed] -  fix of Android's bug that causes all the corners to become slightly curved if only specific corners' radius should be more than zero.
Pull Request resolved: https://github.com/facebook/react-native/pull/24390

Differential Revision: D14870476

Pulled By: cpojer

fbshipit-source-id: df40fc584a2f8badc499413cb3c4e4d96b9e18cf
---
 .../views/view/ReactViewBackgroundDrawable.java  | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java
index 430c5895bd156a..6fffa363d0ce99 100644
--- a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java
+++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java
@@ -662,14 +662,14 @@ private void updatePath() {
     mCenterDrawPath.addRoundRect(
       mTempRectForCenterDrawPath,
       new float[] {
-        innerTopLeftRadiusX + extraRadiusForOutline,
-        innerTopLeftRadiusY + extraRadiusForOutline,
-        innerTopRightRadiusX + extraRadiusForOutline,
-        innerTopRightRadiusY + extraRadiusForOutline,
-        innerBottomRightRadiusX + extraRadiusForOutline,
-        innerBottomRightRadiusY + extraRadiusForOutline,
-        innerBottomLeftRadiusX + extraRadiusForOutline,
-        innerBottomLeftRadiusY + extraRadiusForOutline
+        innerTopLeftRadiusX + (innerTopLeftRadiusX > 0 ? extraRadiusForOutline : 0),
+        innerTopLeftRadiusY + (innerTopLeftRadiusY > 0 ? extraRadiusForOutline : 0),
+        innerTopRightRadiusX + (innerTopRightRadiusX > 0 ? extraRadiusForOutline : 0),
+        innerTopRightRadiusY + (innerTopRightRadiusY > 0 ? extraRadiusForOutline : 0),
+        innerBottomRightRadiusX + (innerBottomRightRadiusX > 0 ? extraRadiusForOutline : 0),
+        innerBottomRightRadiusY + (innerBottomRightRadiusY > 0 ? extraRadiusForOutline : 0),
+        innerBottomLeftRadiusX + (innerBottomLeftRadiusX > 0 ? extraRadiusForOutline : 0),
+        innerBottomLeftRadiusY + (innerBottomLeftRadiusY > 0 ? extraRadiusForOutline : 0)
       },
       Path.Direction.CW);