From da8759c6103eef4b53b46640d1f03d29cf5614bb Mon Sep 17 00:00:00 2001 From: Adam Comella Date: Wed, 20 Jul 2016 07:12:48 -0700 Subject: [PATCH] Android: Fix handling of line height with inline images Summary: This PR was split from a commit originally in #8619. /cc dmmiller When an inline image was larger than the specified line height, the image would be clipped. This changes the behavior so that the line height is changed to make room for the inline image. This is consistent with the behavior of RN for iOS. Here's how the change works. ReactTextView now receives its line height from the layout thread rather than directly from JavaScript. The reason is that the layout thread may pick a different line height. In the case that the tallest inline image is larger than the line height supplied by JavaScript, we want to use that image's height as the line height rather than the supplied line height. Also fixed a bug where the image, which is supposed to be baseline aligned, would be positioned at the wrong y location. To fix this, we use `y` (the baseline) in the `draw` method rather than trying to calculate the baseline from `bottom`. For more information see https://code.google.com/p/andro Closes https://github.com/facebook/react-native/pull/8907 Differential Revision: D3592781 Pulled By: dmmiller --- .../src/main/java/com/facebook/react/flat/RCTTextInput.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/flat/RCTTextInput.java b/ReactAndroid/src/main/java/com/facebook/react/flat/RCTTextInput.java index 2319d8ec7..c76886bf8 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/flat/RCTTextInput.java +++ b/ReactAndroid/src/main/java/com/facebook/react/flat/RCTTextInput.java @@ -125,7 +125,8 @@ public class RCTTextInput extends RCTVirtualText implements AndroidView, CSSNode super.onCollectExtraUpdates(uiViewOperationQueue); if (mJsEventCount != UNSET) { ReactTextUpdate reactTextUpdate = - new ReactTextUpdate(getText(), mJsEventCount, false, getPadding()); + new ReactTextUpdate(getText(), mJsEventCount, false, getPadding(), Float.NaN); + // TODO: the Float.NaN should be replaced with the real line height see D3592781 uiViewOperationQueue.enqueueUpdateExtraData(getReactTag(), reactTextUpdate); } }