fix: preserve full language rows when filtering picker

This commit is contained in:
2026-10-18 18:13:56 +02:00
parent fa3591adf8
commit cead6d9382
3 changed files with 28 additions and 1 deletions
@@ -100,5 +100,22 @@ struct LanguagePickerTests {
#expect(selected == "5")
popup.close(animated: false)
#expect(!pill.isAccessibilityHidden())
popup.showLanguages(choices, selected: "15", source: true, relativeTo: anchor)
let search = try #require(descendants(popup.view).compactMap { $0 as? NSSearchField }.first)
let filteredTable = try #require(descendants(popup.view).compactMap { $0 as? NSTableView }.first)
// Shrink from a scrolled list to one result, then grow and shrink again.
for query in ["Language 19", "", "no matching language", "Language 03"] {
search.stringValue = query
search.delegate?.controlTextDidChange?(Notification(name: NSControl.textDidChangeNotification, object: search))
host.layoutSubtreeIfNeeded()
let count = filteredTable.numberOfRows
if count > 0 {
let row = filteredTable.rect(ofRow: filteredTable.selectedRow)
#expect(filteredTable.visibleRect.contains(row))
let viewport = try #require(filteredTable.enclosingScrollView)
#expect(viewport.contentSize.height >= min(CGFloat(count), 6) * filteredTable.rowHeight)
}
}
}
}