widgets: Add option to draw selected GroupedIconView header

This commit is contained in:
Jim Broadus 2021-03-25 00:09:15 -07:00 committed by John Maguire
parent 6b34d0435f
commit e77595fba6
3 changed files with 9 additions and 4 deletions

View File

@ -114,7 +114,7 @@ void SettingsItemDelegate::paint(QPainter* painter,
if (is_separator) {
GroupedIconView::DrawHeader(painter, option.rect, option.font,
option.palette, index.data().toString());
option.palette, index.data().toString(), false);
} else {
QStyledItemDelegate::paint(painter, option, index);
}

View File

@ -65,7 +65,7 @@ int GroupedIconView::header_height() const { return default_header_height_; }
void GroupedIconView::DrawHeader(QPainter* painter, const QRect& rect,
const QFont& font, const QPalette& palette,
const QString& text) {
const QString& text, bool selected) {
painter->save();
// Bold font
@ -73,6 +73,10 @@ void GroupedIconView::DrawHeader(QPainter* painter, const QRect& rect,
bold_font.setBold(true);
QFontMetrics metrics(bold_font);
if (selected) {
painter->fillRect(rect, palette.highlight());
}
QRect text_rect(rect);
text_rect.setHeight(metrics.height());
text_rect.moveTop(
@ -291,7 +295,8 @@ void GroupedIconView::paintEvent(QPaintEvent* e) {
DrawHeader(&painter,
header_rect.translated(-horizontalOffset(), -verticalOffset()),
font(), palette(),
model()->index(header.first_row, 0).data(Role_Group).toString());
model()->index(header.first_row, 0).data(Role_Group).toString(),
false);
}
}

View File

@ -64,7 +64,7 @@ class GroupedIconView : public QListView {
static void DrawHeader(QPainter* painter, const QRect& rect,
const QFont& font, const QPalette& palette,
const QString& text);
const QString& text, bool selected);
protected:
virtual int header_height() const;