diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-05-26 14:12:33 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-05-26 14:12:33 +0000 |
commit | c0be289618a57f7ae8fa1f42c989d9ae4d895956 (patch) | |
tree | 5fe51b522d842d90c866db482b127750cd3adf9d | |
parent | d26ca4055c940126ae1663ad0d54aafd23205ea4 (diff) | |
parent | 58c2ec66ea5c04250b129c59e758c5b012db128e (diff) | |
download | support-snap-temp-L19900000960922591.tar.gz |
Merge "Make SemanticsAction.performImeAction take the action and deprecate SemanticsProperties.imeAction." into snap-temp-L19900000960922591snap-temp-L19900000960922591
7 files changed, 25 insertions, 20 deletions
diff --git a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt index 49de4bc905b..3a6036e5d6a 100644 --- a/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt +++ b/compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt @@ -81,7 +81,6 @@ import androidx.compose.ui.semantics.cutText import androidx.compose.ui.semantics.disabled import androidx.compose.ui.semantics.editableText import androidx.compose.ui.semantics.getTextLayoutResult -import androidx.compose.ui.semantics.imeAction import androidx.compose.ui.semantics.insertTextAtCursor import androidx.compose.ui.semantics.onClick import androidx.compose.ui.semantics.onLongClick @@ -410,7 +409,6 @@ internal fun CoreTextField( val isPassword = visualTransformation is PasswordVisualTransformation val semanticsModifier = Modifier.semantics(true) { // focused semantics are handled by Modifier.focusable() - this.imeAction = imeOptions.imeAction this.editableText = transformedText.text this.textSelectionRange = value.selection if (!enabled) this.disabled() @@ -503,7 +501,7 @@ internal fun CoreTextField( false } } - performImeAction { + performImeAction(imeOptions.imeAction) { // This will perform the appropriate default action if no handler has been specified, so // as far as the platform is concerned, we always handle the action and never want to // defer to the default _platform_ implementation. diff --git a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt index 54c4bc24b0b..f91c06077d5 100644 --- a/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt +++ b/compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt @@ -280,7 +280,7 @@ class TextActionsTest { setText { true } requestFocus { true } insertTextAtCursor { true } - performImeAction { false } + performImeAction(ImeAction.Done) { false } }) } @@ -314,7 +314,7 @@ class TextActionsTest { rule.setContent { BoundaryNode(testTag = "node", Modifier.semantics { setText { true } - performImeAction { true } + performImeAction(ImeAction.Done) { true } }) } diff --git a/compose/ui/ui/api/current.txt b/compose/ui/ui/api/current.txt index 39aa37fc4c6..d50283bffd8 100644 --- a/compose/ui/ui/api/current.txt +++ b/compose/ui/ui/api/current.txt @@ -3048,7 +3048,7 @@ package androidx.compose.ui.semantics { method public static androidx.compose.ui.text.AnnotatedString getEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static boolean getFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static androidx.compose.ui.semantics.ScrollAxisRange getHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver); - method public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver); + method @Deprecated public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static int getLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static String getPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static androidx.compose.ui.semantics.ProgressBarRangeInfo getProgressBarRangeInfo(androidx.compose.ui.semantics.SemanticsPropertyReceiver); @@ -3075,7 +3075,7 @@ package androidx.compose.ui.semantics { method public static void pageUp(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void password(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static void pasteText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); - method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); + method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int imeAction, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void popup(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static void requestFocus(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void scrollBy(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,java.lang.Boolean>? action); @@ -3089,7 +3089,7 @@ package androidx.compose.ui.semantics { method public static void setEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.text.AnnotatedString); method public static void setFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver, boolean); method public static void setHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange); - method public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); + method @Deprecated public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); method public static void setLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); method public static void setPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver, String); method public static void setProgress(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Boolean>? action); diff --git a/compose/ui/ui/api/public_plus_experimental_current.txt b/compose/ui/ui/api/public_plus_experimental_current.txt index baaa2b1137b..2349a6f6947 100644 --- a/compose/ui/ui/api/public_plus_experimental_current.txt +++ b/compose/ui/ui/api/public_plus_experimental_current.txt @@ -3320,7 +3320,7 @@ package androidx.compose.ui.semantics { method public static androidx.compose.ui.text.AnnotatedString getEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static boolean getFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static androidx.compose.ui.semantics.ScrollAxisRange getHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver); - method public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver); + method @Deprecated public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static int getLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static String getPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static androidx.compose.ui.semantics.ProgressBarRangeInfo getProgressBarRangeInfo(androidx.compose.ui.semantics.SemanticsPropertyReceiver); @@ -3348,7 +3348,7 @@ package androidx.compose.ui.semantics { method public static void pageUp(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void password(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static void pasteText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); - method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); + method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int imeAction, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void popup(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static void requestFocus(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void scrollBy(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,java.lang.Boolean>? action); @@ -3362,7 +3362,7 @@ package androidx.compose.ui.semantics { method public static void setEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.text.AnnotatedString); method public static void setFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver, boolean); method public static void setHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange); - method public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); + method @Deprecated public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); method public static void setLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); method public static void setPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver, String); method public static void setProgress(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Boolean>? action); diff --git a/compose/ui/ui/api/restricted_current.txt b/compose/ui/ui/api/restricted_current.txt index 7ce042d307c..65c925ee7d4 100644 --- a/compose/ui/ui/api/restricted_current.txt +++ b/compose/ui/ui/api/restricted_current.txt @@ -3097,7 +3097,7 @@ package androidx.compose.ui.semantics { method public static androidx.compose.ui.text.AnnotatedString getEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static boolean getFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static androidx.compose.ui.semantics.ScrollAxisRange getHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver); - method public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver); + method @Deprecated public static int getImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static int getLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static String getPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static androidx.compose.ui.semantics.ProgressBarRangeInfo getProgressBarRangeInfo(androidx.compose.ui.semantics.SemanticsPropertyReceiver); @@ -3124,7 +3124,7 @@ package androidx.compose.ui.semantics { method public static void pageUp(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void password(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static void pasteText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); - method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); + method public static void performImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int imeAction, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void popup(androidx.compose.ui.semantics.SemanticsPropertyReceiver); method public static void requestFocus(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function0<java.lang.Boolean>? action); method public static void scrollBy(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function2<? super java.lang.Float,? super java.lang.Float,java.lang.Boolean>? action); @@ -3138,7 +3138,7 @@ package androidx.compose.ui.semantics { method public static void setEditableText(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.text.AnnotatedString); method public static void setFocused(androidx.compose.ui.semantics.SemanticsPropertyReceiver, boolean); method public static void setHorizontalScrollAxisRange(androidx.compose.ui.semantics.SemanticsPropertyReceiver, androidx.compose.ui.semantics.ScrollAxisRange); - method public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); + method @Deprecated public static void setImeAction(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); method public static void setLiveRegion(androidx.compose.ui.semantics.SemanticsPropertyReceiver, int); method public static void setPaneTitle(androidx.compose.ui.semantics.SemanticsPropertyReceiver, String); method public static void setProgress(androidx.compose.ui.semantics.SemanticsPropertyReceiver, optional String? label, kotlin.jvm.functions.Function1<? super java.lang.Float,java.lang.Boolean>? action); diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt index f8fdabb008b..3d5a5d409cc 100644 --- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt +++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt @@ -195,7 +195,7 @@ class PlatformTextInputEditTextIntegrationTest { } return@setSelection false } - performImeAction { + performImeAction(ImeAction.Default) { editText.onEditorAction(ExpectedActionCode) true } diff --git a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt index aba7f4d9a19..c33d6bbb3b9 100644 --- a/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt +++ b/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt @@ -212,7 +212,7 @@ object SemanticsProperties { val TextSelectionRange = SemanticsPropertyKey<TextRange>("TextSelectionRange") /** - * @see SemanticsPropertyReceiver.imeAction + * @see SemanticsPropertyReceiver.performImeAction */ val ImeAction = SemanticsPropertyKey<ImeAction>("ImeAction") @@ -930,6 +930,9 @@ var SemanticsPropertyReceiver.textSelectionRange by SemanticsProperties.TextSele * A node that specifies an action should also specify a callback to perform the action via * [performImeAction]. */ +@Deprecated("Pass the ImeAction to performImeAction instead.") +@get:Deprecated("Pass the ImeAction to performImeAction instead.") +@set:Deprecated("Pass the ImeAction to performImeAction instead.") var SemanticsPropertyReceiver.imeAction by SemanticsProperties.ImeAction /** @@ -1109,20 +1112,24 @@ fun SemanticsPropertyReceiver.insertTextAtCursor( } /** - * Action to invoke the IME action handler configured on the node. + * Action to invoke the IME action handler configured on the node, as well as specify the type of + * IME action provided by the node. * * Expected to be used on editable text fields. * - * A node that specifies an action callback should also report what IME action it will perform via - * the [imeAction] property. - * + * @param imeAction The IME action provided by the node. * @param label Optional label for this action. * @param action Action to be performed when [SemanticsActions.PerformImeAction] is called. + * + * @see SemanticsProperties.ImeAction + * @see SemanticsActions.PerformImeAction */ fun SemanticsPropertyReceiver.performImeAction( + imeAction: ImeAction, label: String? = null, action: (() -> Boolean)? ) { + this[SemanticsProperties.ImeAction] = imeAction this[SemanticsActions.PerformImeAction] = AccessibilityAction(label, action) } |