From ab1d1690685226528160e1c689e6398643fdd5df Mon Sep 17 00:00:00 2001 From: Andrew Wang Date: Wed, 24 Jan 2024 11:59:08 -0800 Subject: [PATCH] Convert `Layout::isLayoutDirectionRTL` to an extension method of context Summary: clean up Layout Reviewed By: adityasharat Differential Revision: D52961172 fbshipit-source-id: c851c32f673366874c735c9984be981861ebfdb9 --- .../main/java/com/facebook/litho/ContextUtils.kt | 13 +++++++++++++ .../src/main/java/com/facebook/litho/Layout.kt | 14 -------------- .../com/facebook/litho/LithoYogaLayoutFunction.kt | 3 ++- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/litho-core/src/main/java/com/facebook/litho/ContextUtils.kt b/litho-core/src/main/java/com/facebook/litho/ContextUtils.kt index e97135710a3..5a4bb06d87f 100644 --- a/litho-core/src/main/java/com/facebook/litho/ContextUtils.kt +++ b/litho-core/src/main/java/com/facebook/litho/ContextUtils.kt @@ -21,6 +21,8 @@ import android.app.Application import android.app.Service import android.content.Context import android.content.ContextWrapper +import android.content.pm.ApplicationInfo +import android.view.View object ContextUtils { @@ -67,4 +69,15 @@ object ContextUtils { @JvmStatic fun getTargetSdkVersion(context: Context): Int = context.applicationContext.applicationInfo.targetSdkVersion + + internal fun Context.getLayoutDirection(): Int = resources.configuration.layoutDirection + + internal fun Context.isLayoutDirectionRTL(): Boolean { + val applicationInfo = applicationInfo + if (applicationInfo.flags and ApplicationInfo.FLAG_SUPPORTS_RTL != 0) { + val layoutDirection = getLayoutDirection() + return layoutDirection == View.LAYOUT_DIRECTION_RTL + } + return false + } } diff --git a/litho-core/src/main/java/com/facebook/litho/Layout.kt b/litho-core/src/main/java/com/facebook/litho/Layout.kt index 26a9a3f4890..dcddee9e9c2 100644 --- a/litho-core/src/main/java/com/facebook/litho/Layout.kt +++ b/litho-core/src/main/java/com/facebook/litho/Layout.kt @@ -17,7 +17,6 @@ package com.facebook.litho import android.content.Context -import android.content.pm.ApplicationInfo import android.graphics.Rect import android.view.View import com.facebook.rendercore.LayoutCache @@ -249,19 +248,6 @@ internal object Layout { return true } - @JvmStatic - fun isLayoutDirectionRTL(context: Context): Boolean { - val applicationInfo = context.applicationInfo - if (applicationInfo.flags and ApplicationInfo.FLAG_SUPPORTS_RTL != 0) { - val layoutDirection = getLayoutDirection(context) - return layoutDirection == View.LAYOUT_DIRECTION_RTL - } - return false - } - - private fun getLayoutDirection(context: Context): Int = - context.resources.configuration.layoutDirection - private fun measureNestedTree( lithoLayoutContext: LithoLayoutContext, parentContext: ComponentContext, diff --git a/litho-core/src/main/java/com/facebook/litho/LithoYogaLayoutFunction.kt b/litho-core/src/main/java/com/facebook/litho/LithoYogaLayoutFunction.kt index c077d1eb4bb..a582b473079 100644 --- a/litho-core/src/main/java/com/facebook/litho/LithoYogaLayoutFunction.kt +++ b/litho-core/src/main/java/com/facebook/litho/LithoYogaLayoutFunction.kt @@ -22,6 +22,7 @@ import android.util.Pair import android.view.View import com.facebook.kotlin.compilerplugins.dataclassgenerate.annotation.DataClassGenerate import com.facebook.kotlin.compilerplugins.dataclassgenerate.annotation.Mode +import com.facebook.litho.ContextUtils.isLayoutDirectionRTL import com.facebook.litho.YogaLayoutOutput.Companion.getYogaNode import com.facebook.litho.config.LithoDebugConfigurations import com.facebook.litho.drawable.BorderColorDrawable @@ -69,7 +70,7 @@ internal object LithoYogaLayoutFunction { val widthSpec = sizeConstraints.toWidthSpec() val heightSpec = sizeConstraints.toHeightSpec() - if (lithoNode.isLayoutDirectionInherit && Layout.isLayoutDirectionRTL(context.androidContext)) { + if (lithoNode.isLayoutDirectionInherit && context.androidContext.isLayoutDirectionRTL()) { yogaRoot.setDirection(YogaDirection.RTL) } if (YogaConstants.isUndefined(yogaRoot.width.value)) {