Merge "Add switch to CustomFocusOrderDemo" into androidx-main am: 3e0a61895b

Original change: https://android-review.googlesource.com/c/platform/frameworks/support/+/2135889

Change-Id: I55c41de3c0a4e9f72fd9c845df926389c559d9f0
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/focus/CustomFocusOrderDemo.kt b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/focus/CustomFocusOrderDemo.kt
index 512c599..7c9c0d6 100644
--- a/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/focus/CustomFocusOrderDemo.kt
+++ b/compose/ui/ui/integration-tests/ui-demos/src/main/java/androidx/compose/ui/demos/focus/CustomFocusOrderDemo.kt
@@ -24,6 +24,7 @@
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.requiredWidth
+import androidx.compose.material.Switch
 import androidx.compose.material.Text
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.DisposableEffect
@@ -34,6 +35,7 @@
 import androidx.compose.ui.ExperimentalComposeUiApi
 import androidx.compose.ui.Modifier
 import androidx.compose.ui.focus.FocusRequester
+import androidx.compose.ui.focus.FocusRequester.Companion.Default
 import androidx.compose.ui.focus.focusProperties
 import androidx.compose.ui.focus.focusRequester
 import androidx.compose.ui.focus.focusTarget
@@ -51,64 +53,60 @@
     Column {
         Row {
             Text(
-                "Use the arrow keys to move focus left/right/up/down " +
-                    "and the tab and shift+tab key to move next/previous"
+                "Use the arrow keys to move focus left/right/up/down."
             )
         }
         Column(Modifier.fillMaxSize(), SpaceEvenly) {
             val (item1, item2, item3, item4) = remember { FocusRequester.createRefs() }
-            Row(Modifier.fillMaxWidth(), SpaceEvenly) {
-                FocusableText(
-                    text = "1",
-                    modifier = Modifier
-                        .focusRequester(item1)
-                        .focusProperties {
-                            next = item2
-                            right = item2
-                            down = item3
-                            previous = item4
-                        }
-                )
-                FocusableText(
-                    text = "2",
-                    modifier = Modifier
-                        .focusRequester(item2)
-                        .focusProperties {
-                            next = item3
-                            left = item1
-                            down = item4
-                            previous = item1
-                        }
-                )
+            var wrapAround by remember { mutableStateOf(false) }
+            Row {
+                Text("Wrap around focus search")
+                Switch(checked = wrapAround, onCheckedChange = { wrapAround = !wrapAround })
             }
             Row(Modifier.fillMaxWidth(), SpaceEvenly) {
-                FocusableText(
-                    text = "3",
-                    modifier = Modifier
-                        .focusRequester(item3)
-                        .focusProperties {
-                            next = item4
-                            right = item4
-                            up = item1
-                            previous = item2
-                        }
-                )
-                FocusableText(
-                    text = "4",
-                    modifier = Modifier
-                        .focusRequester(item4)
-                        .focusProperties {
-                            next = item1
-                            left = item3
-                            up = item2
-                            previous = item3
-                        }
-                )
-            }
-            DisposableEffect(Unit) {
-                item1.requestFocus()
-                onDispose { }
-            }
+                    FocusableText(
+                        text = "1",
+                        modifier = Modifier
+                            .focusRequester(item1)
+                            .focusProperties {
+                                left = if (wrapAround) item2 else Default
+                                up = if (wrapAround) item3 else Default
+                            }
+                    )
+                        FocusableText(
+                        text = "2",
+                        modifier = Modifier
+                            .focusRequester(item2)
+                            .focusProperties {
+                                right = if (wrapAround) item1 else Default
+                                up = if (wrapAround) item4 else Default
+                            }
+                    )
+                }
+                Row(Modifier.fillMaxWidth(), SpaceEvenly) {
+                    FocusableText(
+                        text = "3",
+                        modifier = Modifier
+                            .focusRequester(item3)
+                            .focusProperties {
+                                left = if (wrapAround) item4 else Default
+                                down = if (wrapAround) item1 else Default
+                            }
+                    )
+                    FocusableText(
+                        text = "4",
+                        modifier = Modifier
+                            .focusRequester(item4)
+                            .focusProperties {
+                                right = if (wrapAround) item3 else Default
+                                down = if (wrapAround) item2 else Default
+                            }
+                    )
+                }
+                DisposableEffect(Unit) {
+                    item1.requestFocus()
+                    onDispose { }
+                }
         }
     }
 }