# androidx.compose.ui.focus

Common/All

## Interfaces

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusEnterExitScope` | Receiver scope for `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusProperties#onEnter()` and `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusProperties#onExit()`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusEventModifier` | **This interface is deprecated.** Use FocusEventModifierNode instead | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusEventModifierNode` | Implement this interface create a modifier node that can be used to observe focus state changes to a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetNode` down the hierarchy. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusManager` |   | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusOrderModifier` | **This interface is deprecated.** Use Modifier.focusProperties() instead | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusProperties` | Properties that are applied to `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusTarget.modifier#(androidx.compose.ui.Modifier).focusTarget()` that is the first child of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusPropertiesModifierNode` that sets these properties. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusPropertiesModifierNode` | Implement this interface create a modifier node that can be used to modify the focus properties of the associated `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetNode`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequesterModifier` | **This interface is deprecated.** Use FocusRequesterModifierNode instead | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequesterModifierNode` | Implement this interface to create a modifier node that can be used to request changes in the focus state of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetNode` down the hierarchy. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState` | The focus state of a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetNode`. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode` | This modifier node can be delegated to in order to create a modifier that makes a component focusable. | Cmn |

## Classes

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusDirection` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusDirection` is used to specify the direction for a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusManager#moveFocus(androidx.compose.ui.focus.FocusDirection)` request. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusOrder` | **This class is deprecated.** Use FocusProperties instead | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester` | The `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester` is used in conjunction with `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusRequester.modifier#(androidx.compose.ui.Modifier).focusRequester(androidx.compose.ui.focus.FocusRequester)` to send requests to change focus. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/Focusability` | Focusability configures whether a focus target can be focused. | Cmn |

## Objects

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester.Companion` |   | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester.Companion.FocusRequesterFactory` | Convenient way to create multiple `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester` instances. | Cmn |

## Modifiers

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusModifier.modifier` | Add this modifier to a component to make it focusable. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusOrder.modifier` | Use this modifier to specify a custom focus traversal order. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusProperties.modifier` | This modifier allows you to specify properties that are accessible to `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusTarget.modifier#(androidx.compose.ui.Modifier).focusTarget()`s further down the modifier chain or on child layout nodes. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusRequester.modifier` | Add this modifier to a component to request changes to focus. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusRestorer.modifier` | This modifier can be used to save and restore focus to a focus group. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusTarget.modifier` | Add this modifier to a component to make it focusable. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/onFocusChanged.modifier` | Add this modifier to a component to observe focus state events. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/onFocusEvent.modifier` | Add this modifier to a component to observe focus state events. | Cmn |

## Top-level functions summary

|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#FocusTargetModifierNode(androidx.compose.ui.focus.Focusability,kotlin.Function2)( focusability: https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/Focusability, onFocusChange: ((previous: https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState, current: https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)? )` Create a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#FocusTargetModifierNode(androidx.compose.ui.focus.Focusability,kotlin.Function2)` that can be delegated to in order to create a modifier that makes a component focusable. | Cmn |

## Extension functions summary

|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequesterModifierNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusRequesterModifierNode).captureFocus()()` Deny requests to clear focus. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequesterModifierNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusRequesterModifierNode).freeFocus()()` Use this function to send a request to free focus when one of the components associated with this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester` is in a Captured state. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/geometry/Rect?` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusTargetModifierNode).getFocusedRect()()` Calculates the rectangular area in this node's coordinates that corresponds to the focus area of the focused node under this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode`, including itself. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusPropertiesModifierNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusPropertiesModifierNode).invalidateFocusProperties()()` | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequesterModifierNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusRequesterModifierNode).requestFocus()()` Use this function to request focus. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)( left: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, top: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, right: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, bottom: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Attempts to request focus for the most suitable focusable child node that overlaps with the given rect area (`https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`). | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/node/DelegatableNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)( left: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, top: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, right: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html, bottom: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html )` Attempts to request focus for the most suitable focusable child node that overlaps with the given rect area (`https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`). | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequesterModifierNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusRequesterModifierNode).restoreFocusedChild()()` Use this function to restore focus to one of the children of the node pointed to by this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester`. | Cmn |
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequesterModifierNode.https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusRequesterModifierNode).saveFocusedChild()()` Use this function to request the focus target to save a reference to the currently focused child in its saved instance state. | Cmn |

## Top-level functions

### FocusTargetModifierNode

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusTargetModifierNode.kt+function:FocusTargetModifierNode)

```
fun FocusTargetModifierNode(
    focusability: Focusability = Focusability.Always,
    onFocusChange: ((previous: FocusState, current: FocusState) -> Unit)? = null
): FocusTargetModifierNode
```

Create a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#FocusTargetModifierNode(androidx.compose.ui.focus.Focusability,kotlin.Function2)` that can be delegated to in order to create a modifier that makes a component focusable. Use a different instance of `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#FocusTargetModifierNode(androidx.compose.ui.focus.Focusability,kotlin.Function2)` for each focusable component.

| Parameters |
|---|---|
| `focusability: https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/Focusability = Focusability.Always` | the `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/Focusability` that configures focusability for this node |
| `onFocusChange: ((previous: https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState, current: https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState) -> https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-unit/index.html)? = null` | a callback invoked when the `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode#focusState()` changes, providing the previous state that it changed from, and the current focus state. Note that this will be invoked if the node is losing focus due to being detached from the hierarchy, but before the node is marked as detached (node.isAttached will still be true). |

## Extension functions

### FocusRequesterModifierNode.captureFocus

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusRequesterModifierNode.kt+function:captureFocus) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.4.0)

```
fun FocusRequesterModifierNode.captureFocus(): Boolean
```

Deny requests to clear focus.

Use this function to send a request to capture focus. If a component captures focus, it will send a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState` object to its associated `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/onFocusChanged.modifier#(androidx.compose.ui.Modifier).onFocusChanged(kotlin.Function1)` modifiers where [FocusState.isCaptured]() == true.

When a component is in a Captured state, all focus requests from other components are declined.

```kotlin
import androidx.compose.foundation.border
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.graphics.Color.Companion.Red
import androidx.compose.ui.graphics.Color.Companion.Transparent
import androidx.compose.ui.unit.dp

val focusRequester = remember { FocusRequester() }
var value by remember { mutableStateOf("apple") }
var borderColor by remember { mutableStateOf(Transparent) }
TextField(
    value = value,
    onValueChange = {
        value = it.apply {
            if (length > 5) focusRequester.captureFocus() else focusRequester.freeFocus()
        }
    },
    modifier =
        Modifier.border(2.dp, borderColor).focusRequester(focusRequester).onFocusChanged {
            borderColor = if (it.isCaptured) Red else Transparent
        },
)
```

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the focus was successfully captured by one of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusTarget.modifier#(androidx.compose.ui.Modifier).focusTarget()` modifiers associated with this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester`. False otherwise. |

### FocusRequesterModifierNode.freeFocus

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusRequesterModifierNode.kt+function:freeFocus) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.4.0)

```
fun FocusRequesterModifierNode.freeFocus(): Boolean
```

Use this function to send a request to free focus when one of the components associated with this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester` is in a Captured state. If a component frees focus, it will send a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState` object to its associated `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/onFocusChanged.modifier#(androidx.compose.ui.Modifier).onFocusChanged(kotlin.Function1)` modifiers where [FocusState.isCaptured]() == false.

When a component is in a Captured state, all focus requests from other components are declined. .

```kotlin
import androidx.compose.foundation.border
import androidx.compose.material3.Text
import androidx.compose.material3.TextField
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.graphics.Color.Companion.Red
import androidx.compose.ui.graphics.Color.Companion.Transparent
import androidx.compose.ui.unit.dp

val focusRequester = remember { FocusRequester() }
var value by remember { mutableStateOf("apple") }
var borderColor by remember { mutableStateOf(Transparent) }
TextField(
    value = value,
    onValueChange = {
        value = it.apply {
            if (length > 5) focusRequester.captureFocus() else focusRequester.freeFocus()
        }
    },
    modifier =
        Modifier.border(2.dp, borderColor).focusRequester(focusRequester).onFocusChanged {
            borderColor = if (it.isCaptured) Red else Transparent
        },
)
```

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the captured focus was successfully released. i.e. At the end of this operation, one of the components associated with this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusRequester.modifier#(androidx.compose.ui.Modifier).focusRequester(androidx.compose.ui.focus.FocusRequester)` freed focus. |

### FocusTargetModifierNode.getFocusedRect

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusTargetModifierNode.kt+function:getFocusedRect) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun FocusTargetModifierNode.getFocusedRect(): Rect?
```

Calculates the rectangular area in this node's coordinates that corresponds to the focus area of the focused node under this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusTargetModifierNode`, including itself.

This function returns `null` when;

- This node is not focused and there is no focused descendant.

- This node is detached from the composition hierarchy.

### FocusPropertiesModifierNode.invalidateFocusProperties

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusPropertiesModifierNode.kt+function:invalidateFocusProperties) Added in [1.5.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.5.0)

```
fun FocusPropertiesModifierNode.invalidateFocusProperties(): Unit
```

### FocusRequesterModifierNode.requestFocus

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusRequesterModifierNode.kt+function:requestFocus) Added in [1.4.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.4.0)

```
fun FocusRequesterModifierNode.requestFocus(): Boolean
```

Use this function to request focus. If the system grants focus to a component associated with this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester`, its `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/onFocusChanged.modifier#(androidx.compose.ui.Modifier).onFocusChanged(kotlin.Function1)` modifiers will receive a `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState` object where `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusState#isFocused()` is true.

```kotlin
import androidx.compose.foundation.border
import androidx.compose.foundation.clickable
import androidx.compose.foundation.focusable
import androidx.compose.foundation.layout.Box
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.graphics.Color.Companion.Black
import androidx.compose.ui.graphics.Color.Companion.Green
import androidx.compose.ui.unit.dp

val focusRequester = remember { FocusRequester() }
var color by remember { mutableStateOf(Black) }
Box(
    Modifier.clickable { focusRequester.requestFocus() }
        .border(2.dp, color)
        // The focusRequester should be added BEFORE the focusable.
        .focusRequester(focusRequester)
        // The onFocusChanged should be added BEFORE the focusable that is being observed.
        .onFocusChanged { color = if (it.isFocused) Green else Black }
        .focusable()
)
```

### DelegatableNode.requestFocusForChildInLocalBounds

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/RequestChildFocus.kt+function:requestFocusForChildInLocalBounds) Added in [1.13.0-rc01](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.13.0-rc01)

```
fun DelegatableNode.requestFocusForChildInLocalBounds(
    left: Int,
    top: Int,
    right: Int,
    bottom: Int
): Boolean
```

Attempts to request focus for the most suitable focusable child node that overlaps with the given rect area (`https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`).

The rectangle is interpreted in the coordinate space **relative to the receiver node**.

| Parameters |
|---|---|
| `left: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | the left edge of the rectangle, in pixels relative to the receiver node's origin. |
| `top: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | the top edge of the rectangle, in pixels relative to the receiver node's origin. |
| `right: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | the right edge of the rectangle, in pixels relative to the receiver node's origin. |
| `bottom: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | the bottom edge of the rectangle, in pixels relative to the receiver node's origin. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `true` if a matching child was found and focus was granted; `false` if no such child exists, it is already focused, or the focus request failed. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)` |   |

### DelegatableNode.requestFocusForChildInRootBounds

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/RequestChildFocus.kt+function:requestFocusForChildInRootBounds) Added in [1.10.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.10.0)

```
fun DelegatableNode.requestFocusForChildInRootBounds(
    left: Int,
    top: Int,
    right: Int,
    bottom: Int
): Boolean
```

Attempts to request focus for the most suitable focusable child node that overlaps with the given rect area (`https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`, `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInRootBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)`).

The rectangle is interpreted in the coordinate space **relative to the compose root**.

| Parameters |
|---|---|
| `left: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | is the left edge of the rectangle, in pixels relative to the compose root. |
| `top: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | is the top edge of the rectangle, in pixels relative to the compose root. |
| `right: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | is the right edge of the rectangle, in pixels relative to the compose root. |
| `bottom: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-int/index.html` | is the bottom edge of the rectangle, in pixels relative to the compose root. |

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | `true` if a matching child was found and focus was granted; `false` if no such child exists, it is already focused, or the focus request failed. |

| See also |
|---|---|
| `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.node.DelegatableNode).requestFocusForChildInLocalBounds(kotlin.Int,kotlin.Int,kotlin.Int,kotlin.Int)` |   |

### FocusRequesterModifierNode.restoreFocusedChild

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusRequesterModifierNode.kt+function:restoreFocusedChild) Added in [1.6.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0)

```
fun FocusRequesterModifierNode.restoreFocusedChild(): Boolean
```

Use this function to restore focus to one of the children of the node pointed to by this `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/FocusRequester`. This restores focus to a previously focused child that was saved by using `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusRequesterModifierNode).saveFocusedChild()`.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if we successfully restored focus to one of the children of the `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/focusTarget.modifier#(androidx.compose.ui.Modifier).focusTarget()` associated with this node. |

### FocusRequesterModifierNode.saveFocusedChild

Cmn Artifact: [androidx.compose.ui:ui](https://developer.android.com/jetpack/androidx/releases/compose-ui) [View Source](https://cs.android.com/search?q=file:androidx/compose/ui/focus/FocusRequesterModifierNode.kt+function:saveFocusedChild) Added in [1.6.0](https://developer.android.com/jetpack/androidx/releases/compose-ui#1.6.0)

```
fun FocusRequesterModifierNode.saveFocusedChild(): Boolean
```

Use this function to request the focus target to save a reference to the currently focused child in its saved instance state. After calling this, focus can be restored to the saved child by making a call to `https://developer.android.com/reference/kotlin/androidx/compose/ui/focus/package-summary#(androidx.compose.ui.focus.FocusRequesterModifierNode).restoreFocusedChild()`.

| Returns |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-boolean/index.html` | true if the focus target associated with this node has a focused child and we successfully saved a reference to it. |