Compose icon indicating copy to clipboard operation
Compose copied to clipboard

Configure useUnmergedTree flag

Open Angakokv opened this issue 2 years ago • 3 comments
trafficstars

I need to find not merged element in compose tree. So how can I set useUnmergedTree to true to use in ViewBuilder?

Angakokv avatar Jan 27 '23 12:01 Angakokv

I have a same question

makaronis avatar Aug 09 '23 12:08 makaronis

Hey, I also got stuck with this problem. But after some digging I found two ways to specify useUnmergedTree option:

  • Use KNode constructor with nodeMatcher parameter:
val title = KNode(
    semanticsProvider = semanticsProvider,
    nodeMatcher = NodeMatcher(
        matcher = hasTestTag("title_test_tag"),
        useUnmergedTree = true,
    ),
    parentNode = this,
)
  • Overwrite useUnmergedTree variable in ViewBuilder block:
val title: KNode = child {
    useUnmergedTree = true
    hasTestTag("title_test_tag")
}

sandboiii avatar Oct 10 '23 19:10 sandboiii

You can override constructors for KNode

class KAppNode : KNode {
    constructor(
        semanticsProvider: SemanticsNodeInteractionsProvider,
        nodeMatcher: NodeMatcher,
        parentNode: BaseNode<*>? = null,
    ) : super(
        semanticsProvider,
        nodeMatcher.copy(
            useUnmergedTree = true
        ),
        parentNode
    )

    constructor(
        semanticsProvider: SemanticsNodeInteractionsProvider,
        nodeMatcher: NodeMatcher,
    ) : super(
        semanticsProvider,
        nodeMatcher.copy(
            useUnmergedTree = true
        )
    )

    constructor(
        semanticsProvider: SemanticsNodeInteractionsProvider,
        viewBuilderAction: ViewBuilder.() -> Unit,
    ) : super(
        semanticsProvider,
        ViewBuilder().apply {
            useUnmergedTree = true
            viewBuilderAction()
        }.build()
    )
}

and use it like this

val title: KAppNode = child { hasTestTag("titleTestTag") }

EvgenyMeltsaykin avatar Dec 27 '23 20:12 EvgenyMeltsaykin

Provided a global one KakaoCompose.Override.useUnmergedTree = true

Vacxe avatar Jun 18 '24 12:06 Vacxe