Merge pull request #5293 from pangeachat/5265-underline-remains-in-activity-vocab-list-after-i-click-away

fix: clear selected token in activity vocab display on word card dism…
This commit is contained in:
ggurdin 2026-01-20 15:19:02 -05:00 committed by GitHub
commit a4e9068a60
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -106,27 +106,17 @@ class _VocabChipsState extends State<_VocabChips> with TokenRenderingMixin {
OverlayUtil.showPositionedCard(
overlayKey: target,
context: context,
cardToShow: StatefulBuilder(
builder: (context, setState) => WordZoomWidget(
token: PangeaTokenText(
content: v.lemma,
length: v.lemma.characters.length,
offset: 0,
),
construct: ConstructIdentifier(
lemma: v.lemma,
type: ConstructTypeEnum.vocab,
category: v.pos,
),
langCode: widget.langCode,
onClose: () {
MatrixState.pAnyState.closeOverlay(target);
setState(() => _selectedVocab = null);
},
onDismissNewWordOverlay: () {
if (mounted) setState(() {});
},
),
cardToShow: _WordCardWrapper(
v: v,
langCode: widget.langCode,
target: target,
onClose: () {
if (mounted) {
WidgetsBinding.instance.addPostFrameCallback(
(_) => setState(() => _selectedVocab = null),
);
}
},
),
transformTargetId: target,
closePrevOverlay: false,
@ -204,3 +194,52 @@ class _VocabChipsState extends State<_VocabChips> with TokenRenderingMixin {
);
}
}
class _WordCardWrapper extends StatefulWidget {
final Vocab v;
final String langCode;
final String target;
final VoidCallback onClose;
const _WordCardWrapper({
required this.v,
required this.langCode,
required this.target,
required this.onClose,
});
@override
State<_WordCardWrapper> createState() => _WordCardWrapperState();
}
class _WordCardWrapperState extends State<_WordCardWrapper> {
@override
void dispose() {
widget.onClose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return WordZoomWidget(
token: PangeaTokenText(
content: widget.v.lemma,
length: widget.v.lemma.characters.length,
offset: 0,
),
construct: ConstructIdentifier(
lemma: widget.v.lemma,
type: ConstructTypeEnum.vocab,
category: widget.v.pos,
),
langCode: widget.langCode,
onClose: () {
MatrixState.pAnyState.closeOverlay(widget.target);
widget.onClose();
},
onDismissNewWordOverlay: () {
if (mounted) setState(() {});
},
);
}
}