Fix ItemView editing look and custom background color on QWindows11Style
Disable text painting, when current item in ItemView is in editing mode. Respect custom set background colors for items in ItemView. Fixes: QTBUG-119501 Change-Id: I0cc80459e67765b2e648aa438aabc7dc18bef4a9 Reviewed-by: Chris René Lerner <chris.lerner@qt.io> Reviewed-by: Oliver Wolff <oliver.wolff@qt.io> (cherry picked from commit 5d590a38d96206bcf5ad6ffe2b156223dc909fd7)
This commit is contained in:
parent
41a605e0f2
commit
da28d17eaf
@ -1308,11 +1308,9 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
|||||||
|
|
||||||
painter->setPen(highContrastTheme == true ? vopt->palette.buttonText().color() : WINUI3Colors[colorSchemeIndex][frameColorLight]);
|
painter->setPen(highContrastTheme == true ? vopt->palette.buttonText().color() : WINUI3Colors[colorSchemeIndex][frameColorLight]);
|
||||||
if (vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || vopt->viewItemPosition == QStyleOptionViewItem::Invalid) {
|
if (vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || vopt->viewItemPosition == QStyleOptionViewItem::Invalid) {
|
||||||
}
|
} else if (vopt->viewItemPosition == QStyleOptionViewItem::Beginning) {
|
||||||
else if (vopt->viewItemPosition == QStyleOptionViewItem::Beginning) {
|
|
||||||
painter->drawLine(option->rect.topRight(), option->rect.bottomRight());
|
painter->drawLine(option->rect.topRight(), option->rect.bottomRight());
|
||||||
}
|
} else if (vopt->viewItemPosition == QStyleOptionViewItem::End) {
|
||||||
else if (vopt->viewItemPosition == QStyleOptionViewItem::End) {
|
|
||||||
painter->drawLine(option->rect.topLeft(), option->rect.bottomLeft());
|
painter->drawLine(option->rect.topLeft(), option->rect.bottomLeft());
|
||||||
} else {
|
} else {
|
||||||
painter->drawLine(option->rect.topRight(), option->rect.bottomRight());
|
painter->drawLine(option->rect.topRight(), option->rect.bottomRight());
|
||||||
@ -1321,22 +1319,23 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
|||||||
painter->setPen(QPen(option->palette.buttonText().color()));
|
painter->setPen(QPen(option->palette.buttonText().color()));
|
||||||
|
|
||||||
bool isTreeView = widget && widget->inherits("QTreeView");
|
bool isTreeView = widget && widget->inherits("QTreeView");
|
||||||
|
|
||||||
if ((vopt->state & State_Selected || vopt->state & State_MouseOver) && !(isTreeView && vopt->state & State_MouseOver) && vopt->showDecorationSelected) {
|
if ((vopt->state & State_Selected || vopt->state & State_MouseOver) && !(isTreeView && vopt->state & State_MouseOver) && vopt->showDecorationSelected) {
|
||||||
painter->setBrush(WINUI3Colors[colorSchemeIndex][subtleHighlightColor]);
|
painter->setBrush(WINUI3Colors[colorSchemeIndex][subtleHighlightColor]);
|
||||||
|
} else {
|
||||||
|
painter->setBrush(vopt->backgroundBrush);
|
||||||
|
}
|
||||||
painter->setPen(Qt::NoPen);
|
painter->setPen(Qt::NoPen);
|
||||||
|
|
||||||
if (vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || vopt->viewItemPosition == QStyleOptionViewItem::Invalid) {
|
if (vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || vopt->viewItemPosition == QStyleOptionViewItem::Invalid) {
|
||||||
painter->drawRoundedRect(vopt->rect.marginsRemoved(QMargins(2,2,2,2)),secondLevelRoundingRadius,secondLevelRoundingRadius);
|
painter->drawRoundedRect(vopt->rect.marginsRemoved(QMargins(2,2,2,2)),secondLevelRoundingRadius,secondLevelRoundingRadius);
|
||||||
}
|
} else if (vopt->viewItemPosition == QStyleOptionViewItem::Beginning) {
|
||||||
else if (vopt->viewItemPosition == QStyleOptionViewItem::Beginning) {
|
|
||||||
painter->drawRoundedRect(rect.marginsRemoved(QMargins(2,2,0,2)),secondLevelRoundingRadius,secondLevelRoundingRadius);
|
painter->drawRoundedRect(rect.marginsRemoved(QMargins(2,2,0,2)),secondLevelRoundingRadius,secondLevelRoundingRadius);
|
||||||
}
|
} else if (vopt->viewItemPosition == QStyleOptionViewItem::End) {
|
||||||
else if (vopt->viewItemPosition == QStyleOptionViewItem::End) {
|
|
||||||
painter->drawRoundedRect(vopt->rect.marginsRemoved(QMargins(0,2,2,2)),secondLevelRoundingRadius,secondLevelRoundingRadius);
|
painter->drawRoundedRect(vopt->rect.marginsRemoved(QMargins(0,2,2,2)),secondLevelRoundingRadius,secondLevelRoundingRadius);
|
||||||
} else {
|
} else {
|
||||||
painter->drawRect(vopt->rect.marginsRemoved(QMargins(0,2,0,2)));
|
painter->drawRect(vopt->rect.marginsRemoved(QMargins(0,2,0,2)));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// draw the check mark
|
// draw the check mark
|
||||||
if (vopt->features & QStyleOptionViewItem::HasCheckIndicator) {
|
if (vopt->features & QStyleOptionViewItem::HasCheckIndicator) {
|
||||||
@ -1368,6 +1367,8 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
|
|||||||
vopt->icon.paint(painter, iconRect, vopt->decorationAlignment, mode, state);
|
vopt->icon.paint(painter, iconRect, vopt->decorationAlignment, mode, state);
|
||||||
|
|
||||||
painter->setPen(QPen(option->palette.buttonText().color()));
|
painter->setPen(QPen(option->palette.buttonText().color()));
|
||||||
|
const QAbstractItemView* view = qobject_cast<const QAbstractItemView*>(widget);
|
||||||
|
if (!view->isPersistentEditorOpen(vopt->index))
|
||||||
d->viewItemDrawText(painter, vopt, textRect);
|
d->viewItemDrawText(painter, vopt, textRect);
|
||||||
if (vopt->state & State_Selected && (vopt->viewItemPosition == QStyleOptionViewItem::Beginning || vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || vopt->viewItemPosition == QStyleOptionViewItem::Invalid)) {
|
if (vopt->state & State_Selected && (vopt->viewItemPosition == QStyleOptionViewItem::Beginning || vopt->viewItemPosition == QStyleOptionViewItem::OnlyOne || vopt->viewItemPosition == QStyleOptionViewItem::Invalid)) {
|
||||||
if (widget && widget->inherits("QListView") && qobject_cast<const QListView*>(widget)->viewMode() != QListView::IconMode) {
|
if (widget && widget->inherits("QListView") && qobject_cast<const QListView*>(widget)->viewMode() != QListView::IconMode) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user