aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2023-05-26 14:12:33 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-05-26 14:12:33 +0000
commitc0be289618a57f7ae8fa1f42c989d9ae4d895956 (patch)
tree5fe51b522d842d90c866db482b127750cd3adf9d
parentd26ca4055c940126ae1663ad0d54aafd23205ea4 (diff)
parent58c2ec66ea5c04250b129c59e758c5b012db128e (diff)
downloadsupport-snap-temp-L19900000960922591.tar.gz
Merge "Make SemanticsAction.performImeAction take the action and deprecate SemanticsProperties.imeAction." into snap-temp-L19900000960922591snap-temp-L19900000960922591
-rw-r--r--compose/foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/text/CoreTextField.kt4
-rw-r--r--compose/ui/ui-test/src/androidAndroidTest/kotlin/androidx/compose/ui/test/TextActionsTest.kt4
-rw-r--r--compose/ui/ui/api/current.txt6
-rw-r--r--compose/ui/ui/api/public_plus_experimental_current.txt6
-rw-r--r--compose/ui/ui/api/restricted_current.txt6
-rw-r--r--compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/text/input/PlatformTextInputEditTextIntegrationTest.kt2
-rw-r--r--compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/semantics/SemanticsProperties.kt17
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)
}