mirror of
https://github.com/TelegramMessenger/Telegram-iOS.git
synced 2026-07-06 03:33:41 +02:00
drawInTile previously stroked each cell's full perimeter, double-drawing every interior gridline; visible now that the rich-data chat bubble uses tableBorderColor at 0.25 alpha. Stroking each segment in its own strokePath call would also have left ~1pt² overdraw at every interior 4-cell junction (where a horizontal divider crosses a vertical one) and at every T-junction with the outer rounded rect — each strokePath rasterizes independently and composites against the previous result. Build a single CGMutablePath containing each cell's interior top/left segment (skipping cells on the table's top/left boundary) plus the outer rounded perimeter rect, and call strokePath once. CGContextStrokePath fills the union of all stroke geometries as a single fill op, so each pixel is painted exactly once regardless of how many segments overlap. Empty cells (text == nil) are no longer skipped wholesale: their fill and text remain gated on text != nil (preserves today's no-fill-for- empty behavior), but their interior divider segments still get appended so divider continuity is preserved around them. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| InstantImageGalleryItem.swift | ||
| InstantPageAnchorItem.swift | ||
| InstantPageArticleItem.swift | ||
| InstantPageArticleNode.swift | ||
| InstantPageAudioItem.swift | ||
| InstantPageAudioNode.swift | ||
| InstantPageChecklistMarkerItem.swift | ||
| InstantPageContentNode.swift | ||
| InstantPageController.swift | ||
| InstantPageControllerNode.swift | ||
| InstantPageDetailsItem.swift | ||
| InstantPageDetailsNode.swift | ||
| InstantPageExternalMediaResource.swift | ||
| InstantPageFeedbackItem.swift | ||
| InstantPageFeedbackNode.swift | ||
| InstantPageFormulaItem.swift | ||
| InstantPageGalleryController.swift | ||
| InstantPageGalleryFooterContentNode.swift | ||
| InstantPageImageItem.swift | ||
| InstantPageImageNode.swift | ||
| InstantPageItem.swift | ||
| InstantPageLayout.swift | ||
| InstantPageLayoutSpacings.swift | ||
| InstantPageLinkSelectionView.swift | ||
| InstantPageMath.swift | ||
| InstantPageMedia.swift | ||
| InstantPageMediaPlaylist.swift | ||
| InstantPageMultiTextAdapter.swift | ||
| InstantPageNavigationBar.swift | ||
| InstantPageNode.swift | ||
| InstantPagePeerReferenceItem.swift | ||
| InstantPagePeerReferenceNode.swift | ||
| InstantPagePlayableVideoItem.swift | ||
| InstantPagePlayableVideoNode.swift | ||
| InstantPageReferenceController.swift | ||
| InstantPageReferenceControllerNode.swift | ||
| InstantPageScrollableNode.swift | ||
| InstantPageSettingsBacklightItemNode.swift | ||
| InstantPageSettingsButtonItemNode.swift | ||
| InstantPageSettingsFontFamilyItemNode.swift | ||
| InstantPageSettingsFontSizeItemNode.swift | ||
| InstantPageSettingsItemNode.swift | ||
| InstantPageSettingsItemTheme.swift | ||
| InstantPageSettingsNode.swift | ||
| InstantPageSettingsSwitchItemNode.swift | ||
| InstantPageSettingsThemeItemNode.swift | ||
| InstantPageShapeItem.swift | ||
| InstantPageSlideshowItem.swift | ||
| InstantPageSlideshowItemNode.swift | ||
| InstantPageStoredState.swift | ||
| InstantPageSubContentNode.swift | ||
| InstantPageTableItem.swift | ||
| InstantPageTextItem.swift | ||
| InstantPageTextSelectionNode.swift | ||
| InstantPageTextStyleStack.swift | ||
| InstantPageTheme.swift | ||
| InstantPageTile.swift | ||
| InstantPageTileNode.swift | ||
| InstantPageWebEmbedItem.swift | ||
| InstantPageWebEmbedNode.swift | ||