Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Taps on Jetpack Compose buttons refused because of the fake Button child node

Fechada Para iniciantes
#3,982 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
2/5
Tempo estimado
1-3 horas
Facilidade para iniciantes
78/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Ativa
Stack de tecnologia
react-native, typescript
Domínio
mobile, testing

Direção de pesquisa

A issue aponta o filtro de concorrentes de tap-target no arquivo minificado dist/src/runtime-factory.js; comece localizando o código-fonte legível correspondente e os testes relacionados a tap-target. Verifique como funcionam a filtragem de concorrentes e a resolução do ponto central e, em seguida, execute os testes pertinentes. O trabalho estará concluído quando um toque em um botão do Compose for resolvido sem um patch, inclusive no caso em que exatamente um concorrente atingível cobre o centro do alvo.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Purpose. agent-device refuses taps on Jetpack Compose buttons with "no parent-owned touch point".

Cause. For every merging Button, Compose's SemanticsNode.emitFakeNodes adds a fake child node with role=Button that is not clickable. The competitor filter in the tap-target check matches on type and role names and ignores whether a competitor is clickable or hittable. So the fake child counts as a competing control covering the button, and the tap is blocked.

Required behavior.

  • Only count a competitor that can receive the tap (hittable === true).
  • When exactly one competitor covers the target's center, tap the center.

We patch this today in the minified dist/src/runtime-factory.js. In readable form:

// competitors
.filter((e) => isOverlappingCompetitor(e, target, byIndex))
.filter((e) => e.hittable === true)
// after collecting competitors
if (competitors.length === 1 && contains(competitors[0].rect, center)) return { kind: 'resolved', point: center, strategy: 'center' };

Done when. A tap on a Compose Button resolves without a patch. Still present in 0.21.32.

Dependencies. None.

Linguagem predominante
TypeScript
Estrelas
5.2k
Forks
359
Merge médio
13h 32min
PRs com merge (30d)
671

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de callstack/agent-device

Todas as issues de callstack/agent-device

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.