Introduce separators in drawList

This commit is contained in:
jpirnay
2026-04-09 16:49:28 +02:00
parent 64b6818eeb
commit c4424dfe1c
7 changed files with 169 additions and 3 deletions
+19 -1
View File
@@ -401,11 +401,16 @@ void LyraTheme::drawList(const GfxRenderer& renderer, Rect rect, int itemCount,
scrollBarHeight, true);
}
bool selectedIsSeparator = false;
if (selectedIndex >= 0 && selectedIndex < itemCount && rowTitle != nullptr) {
selectedIsSeparator = UITheme::isSeparatorTitle(rowTitle(selectedIndex));
}
// Draw selection
int contentWidth =
rect.width -
(totalPages > 1 ? (LyraMetrics::values.scrollBarWidth + LyraMetrics::values.scrollBarRightOffset) : 1);
if (selectedIndex >= 0) {
if (selectedIndex >= 0 && !selectedIsSeparator) {
renderer.fillRoundedRect(
rect.x + LyraMetrics::values.contentSidePadding, rect.y + selectedIndex % pageItems * rowHeight,
contentWidth - LyraMetrics::values.contentSidePadding * 2, rowHeight, cornerRadius, Color::LightGray);
@@ -438,6 +443,19 @@ void LyraTheme::drawList(const GfxRenderer& renderer, Rect rect, int itemCount,
}
auto itemName = rowTitle(i);
const bool isSeparator = UITheme::isSeparatorTitle(itemName);
if (isSeparator) {
itemName = UITheme::stripSeparatorTitle(itemName);
}
if (isSeparator) {
drawListSeparator(renderer,
Rect{rect.x + LyraMetrics::values.contentSidePadding, itemY,
contentWidth - LyraMetrics::values.contentSidePadding * 2, rowHeight},
textX, rowTextWidth, itemName);
continue;
}
auto item = renderer.truncatedText(UI_10_FONT_ID, itemName.c_str(), rowTextWidth);
renderer.drawText(UI_10_FONT_ID, textX, itemY + 7, item.c_str(), true);