---
title: "PointerEventPass"
description: "The enumeration of passes where [PointerInputChange] traverses up and down the UI tree.

PointerInputChanges traverse throw the hierarchy in the following passes:
1. [Initial]: Down the tree from ancestor to descendant.
2. [Main]: Up the tree from descendant to ancestor.
3. [Final]: Down the tree from ancestor to descendant.

These passes serve the following purposes:
1. Initial: Allows ancestors to consume aspects of [PointerInputChange] before descendants. This  is where, for example, a scroller may block buttons from getting tapped by other fingers once  scrolling has started.
2. Main: The primary pass where gesture filters should react to and consume aspects of  [PointerInputChange]s. This is the primary path where descendants will interact with  [PointerInputChange]s before parents. This allows for buttons to respond to a tap before a  container of the bottom to respond to a tap.
3. Final: This pass is where children can learn what aspects of [PointerInputChange]s were  consumed by parents during the [Main] pass. For example, this is how a button determines that  it should no longer respond to fingers lifting off of it because a parent scroller has  consumed movement in a [PointerInputChange]."
type: "class"
---

<div class='type'>Class</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>


```kotlin
enum class PointerEventPass
```


The enumeration of passes where `PointerInputChange` traverses up and down the UI tree.

PointerInputChanges traverse throw the hierarchy in the following passes:
1. `Initial`: Down the tree from ancestor to descendant.
2. `Main`: Up the tree from descendant to ancestor.
3. `Final`: Down the tree from ancestor to descendant.

These passes serve the following purposes:
1. Initial: Allows ancestors to consume aspects of `PointerInputChange` before descendants. This  is where, for example, a scroller may block buttons from getting tapped by other fingers once  scrolling has started.
2. Main: The primary pass where gesture filters should react to and consume aspects of  `PointerInputChange`s. This is the primary path where descendants will interact with  `PointerInputChange`s before parents. This allows for buttons to respond to a tap before a  container of the bottom to respond to a tap.
3. Final: This pass is where children can learn what aspects of `PointerInputChange`s were  consumed by parents during the `Main` pass. For example, this is how a button determines that  it should no longer respond to fingers lifting off of it because a parent scroller has  consumed movement in a `PointerInputChange`.



